Files
VisualOverhaul/common/src/main/java/eu/midnightdust/visualoverhaul/mixin/MixinBlastFurnaceBlock.java
2022-11-19 16:18:28 +01:00

41 lines
1.7 KiB
Java

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);
}
}
}