38 lines
1.4 KiB
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;
|
|
}
|
|
}
|
|
}
|