ExtraHoppers/src/main/java/net/shadowfacts/extrahoppers/mixin/MixinBucketItem.java

38 lines
1.4 KiB
Java

package net.shadowfacts.extrahoppers.mixin;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.BucketItem;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.shadowfacts.extrahoppers.util.DynamicFluidStateProvider;
import org.objectweb.asm.Opcodes;
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.Redirect;
/**
* @author shadowfacts
*/
@Mixin(BucketItem.class)
public abstract class MixinBucketItem {
@Shadow
private Fluid fluid;
@Redirect(
method = "placeFluid(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/hit/BlockHitResult;)Z",
at = @At(value = "FIELD", opcode = Opcodes.GETFIELD, target = "Lnet/minecraft/item/BucketItem;fluid:Lnet/minecraft/fluid/Fluid;", ordinal = 4)
)
private Fluid getFluid(BucketItem item, PlayerEntity player, World world, BlockPos pos, BlockHitResult result) {
if (world.getBlockState(pos).getBlock() instanceof DynamicFluidStateProvider) {
return Fluids.WATER;
} else {
return this.fluid;
}
}
}