From f75ebc23614241588df88966d00b67963f315daf Mon Sep 17 00:00:00 2001 From: AngelBottomless <35677394+aria1th@users.noreply.github.com> Date: Thu, 5 May 2022 18:06:11 +0900 Subject: [PATCH] Allow Drain drain Cauldrons. Thanks to aria1th There's no proper fluid interface in cauldron block so its only working for Water and Lava. If any mods uses cauldron as other fluid holder, it might have to change, but I've never seen one. --- .../machine/misc/DrainBlockEntity.java | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/main/java/techreborn/blockentity/machine/misc/DrainBlockEntity.java b/src/main/java/techreborn/blockentity/machine/misc/DrainBlockEntity.java index 23b00bb68..793059d6a 100644 --- a/src/main/java/techreborn/blockentity/machine/misc/DrainBlockEntity.java +++ b/src/main/java/techreborn/blockentity/machine/misc/DrainBlockEntity.java @@ -24,11 +24,10 @@ package techreborn.blockentity.machine.misc; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.FluidDrainable; +import net.minecraft.block.*; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.fluid.Fluid; +import net.minecraft.fluid.Fluids; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -91,6 +90,26 @@ public class DrainBlockEntity extends MachineBaseBlockEntity implements IToolDro TechReborn.LOGGER.debug("Could not get Fluid from ItemStack " + fluidContainer.getItem()); } } + if (aboveBlock instanceof LeveledCauldronBlock && aboveBlockState.isOf(Blocks.WATER_CAULDRON)) { //ensure Water cauldron + Fluid drainFluid = Fluids.WATER; + int level; + if (aboveBlockState.contains(LeveledCauldronBlock.LEVEL)){ + level = aboveBlockState.get(LeveledCauldronBlock.LEVEL); + } + else { + return; + } + world.setBlockState(above, Blocks.CAULDRON.getDefaultState()); + internalTank.setFluidInstance( + new FluidInstance(drainFluid, FluidValue.BUCKET.fraction(3).multiply(level)) + ); + } + if (aboveBlock instanceof LavaCauldronBlock){ + world.setBlockState(above, Blocks.CAULDRON.getDefaultState()); + internalTank.setFluidInstance( + new FluidInstance(Fluids.LAVA, FluidValue.BUCKET) + ); + } } @Override