EnergonRelics/src/main/java/com/thebrokenrail/energonrelics/mixin/MixinWorld.java

34 lines
1.3 KiB
Java

package com.thebrokenrail.energonrelics.mixin;
import com.thebrokenrail.energonrelics.block.forcefield.util.AbstractFieldBlock;
import com.thebrokenrail.energonrelics.api.energy.tick.EnergyTicker;
import net.minecraft.block.Block;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(World.class)
public abstract class MixinWorld {
@Shadow
public abstract boolean isClient();
@Inject(at = @At("TAIL"), method = "tickBlockEntities")
public void tickBlockEntities(CallbackInfo info) {
if (!isClient()) {
EnergyTicker.tick((World) (Object) this);
}
}
@Redirect(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;syncWorldEvent(ILnet/minecraft/util/math/BlockPos;I)V"), method = "breakBlock")
public void breakBlock(World world, int eventId, BlockPos pos, int data) {
if (!(Block.getStateFromRawId(data).getBlock() instanceof AbstractFieldBlock)) {
world.syncWorldEvent(eventId, pos, data);
}
}
}