package eu.midnightdust.visualoverhaul.mixin; import eu.midnightdust.visualoverhaul.config.VOConfig; import net.minecraft.block.AbstractFurnaceBlock; import net.minecraft.block.BlastFurnaceBlock; import net.minecraft.block.BlockState; import net.minecraft.particle.ParticleTypes; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.util.math.random.Random; import net.minecraft.world.World; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(BlastFurnaceBlock.class) public abstract class MixinBlastFurnaceBlock extends AbstractFurnaceBlock { protected MixinBlastFurnaceBlock(Settings settings) { super(settings); } @Inject(at = @At("TAIL"), method = "randomDisplayTick") public void vo$randomDisplayTick(BlockState state, World world, BlockPos pos, Random random, CallbackInfo ci) { if (state.get(LIT) && VOConfig.blast_furnace_particles) { double d = (double)pos.getX() + 0.5D; double e = pos.getY(); double f = (double)pos.getZ() + 0.5D; Direction direction = state.get(FACING); Direction.Axis axis = direction.getAxis(); double h = random.nextDouble() * 0.6D - 0.3D; double i = axis == Direction.Axis.X ? (double)direction.getOffsetX() * 0.4D : h; double j = random.nextDouble() * 6.0D / 16.0D; double k = axis == Direction.Axis.Z ? (double)direction.getOffsetZ() * 0.4D : h; world.addParticle(ParticleTypes.FLAME, d + i, e + j, f + k, 0.0D, 0.0D, 0.0D); } } }