From 92444733ffc25c1a93a060b06ce646926c5190cc Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Fri, 7 Nov 2025 20:03:54 -0700 Subject: [PATCH 01/18] actually give the bucket back on both sides --- .../utilitiesinexcess/common/blocks/BlockDrum.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index 96946737..1b71df9d 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -51,9 +51,7 @@ public boolean hasTileEntity(int metadata) { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if (world.isRemote) { - return true; - } + TileEntity tile = world.getTileEntity(x, y, z); if (tile instanceof TileEntityDrum drum) { ItemStack heldItem = player.getCurrentEquippedItem(); From 506f29532fdfe7f15644b81974b8ce4e30dee779 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Fri, 7 Nov 2025 22:41:08 -0700 Subject: [PATCH 02/18] refactor BlockDrum.java#onBlockActivated to actually work as intended --- .../common/blocks/BlockDrum.java | 108 ++++++++++++------ 1 file changed, 75 insertions(+), 33 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index 1b71df9d..7a323b50 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -9,17 +9,18 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.Direction; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.IFluidContainerItem; +import net.minecraftforge.fluids.*; import com.cleanroommc.modularui.utils.NumberFormat; import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityDrum; @@ -49,50 +50,91 @@ public boolean hasTileEntity(int metadata) { } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, - float hitY, float hitZ) { + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, + int side, float hitX, float hitY, float hitZ) { + + ItemStack heldItem = player.getCurrentEquippedItem(); + if (heldItem == null) return false; TileEntity tile = world.getTileEntity(x, y, z); - if (tile instanceof TileEntityDrum drum) { - ItemStack heldItem = player.getCurrentEquippedItem(); - FluidStack heldFluid = FluidContainerRegistry.getFluidForFilledItem(heldItem); + if (!(tile instanceof TileEntityDrum drum)) return false; + + FluidTank tank = drum.tank; + FluidStack fluid = null; + int containerCapacity = 1000; + + Item item = heldItem.getItem(); + if (item instanceof IFluidContainerItem fluidContainer) { + fluid = fluidContainer.getFluid(heldItem); + containerCapacity = fluidContainer.getCapacity(heldItem); + } else { + fluid = FluidContainerRegistry.getFluidForFilledItem(heldItem); + } - if (FluidContainerRegistry.isFilledContainer(heldItem)) { + if (fluid == null && FluidContainerRegistry.isEmptyContainer(heldItem)) { - if (drum.tank.getFluid() == null) { - drum.setFluid(new FluidStack(heldFluid.getFluid(), 0)); - } + FluidStack stored = tank.getFluid(); + if (stored == null || stored.amount <= 0) return false; - if (drum.fill(ForgeDirection.UP, heldFluid, true) == heldFluid.amount) { - FluidContainerRegistry.drainFluidContainer(heldItem); - ItemStack emptyContainer = FluidContainerRegistry.drainFluidContainer(heldItem); - emptyContainer.stackSize = 1; - heldItem.stackSize--; + int transferAmount = Math.min(containerCapacity, stored.amount); + FluidStack toFill = new FluidStack(stored.getFluid(), transferAmount); + + ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(toFill, heldItem); + if (filledContainer == null) return false; // Not a valid container + + tank.drain(transferAmount, true); + if (!player.capabilities.isCreativeMode) { + heldItem.stackSize--; + if (heldItem.stackSize <= 0) { + player.inventory.setInventorySlotContents(player.inventory.currentItem, filledContainer); + } else { + if (!player.inventory.addItemStackToInventory(filledContainer)) { + player.dropPlayerItemWithRandomChoice(filledContainer, false); + } player.inventory.setInventorySlotContents(player.inventory.currentItem, heldItem); - player.inventory.addItemStackToInventory(emptyContainer); - - player.addChatMessage( - new ChatComponentTranslation( - "tile.drum.chat.filled", - drum.tank.getFluid() - .getLocalizedName(), - NumberFormat.DEFAULT.format(drum.tank.getFluid().amount))); } - } else if (FluidContainerRegistry.isEmptyContainer(heldItem)) { - if (drum.tank.getFluid() != null) { - FluidStack drainedFluid = drum.drain(ForgeDirection.UP, 1000, true); + player.inventory.markDirty(); + } + drum.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } - if (drainedFluid.amount == 1000) { - ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(drainedFluid, heldItem); - player.inventory.setInventorySlotContents(player.inventory.currentItem, filledContainer); + else if (fluid != null) { + int filled = tank.fill(fluid, true); + if (filled > 0) { + + ItemStack emptyContainer = null; + + if (item instanceof IFluidContainerItem fluidContainer) { + fluidContainer.drain(heldItem, filled, true); + emptyContainer = heldItem; + } else { + emptyContainer = FluidContainerRegistry.drainFluidContainer(heldItem); + } + + if (!player.capabilities.isCreativeMode) { + heldItem.stackSize--; + if (heldItem.stackSize <= 0) { + player.inventory.setInventorySlotContents(player.inventory.currentItem, emptyContainer); + } else { + if (emptyContainer != null && !player.inventory.addItemStackToInventory(emptyContainer)) { + player.dropPlayerItemWithRandomChoice(emptyContainer, false); + } + player.inventory.setInventorySlotContents(player.inventory.currentItem, heldItem); } + player.inventory.markDirty(); } + drum.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; } } - - return true; + return false; } + + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, placer, stack); From f6ae2c74c632ed6eb7e40b9aa383249f2339c943 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Fri, 7 Nov 2025 22:59:34 -0700 Subject: [PATCH 03/18] cleanup and finish --- .../common/blocks/BlockDrum.java | 79 ++++++++++--------- 1 file changed, 42 insertions(+), 37 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index 7a323b50..f8564031 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -11,16 +11,15 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.Direction; import net.minecraft.util.StatCollector; import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; -import net.minecraftforge.fluids.*; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.IFluidContainerItem; import com.cleanroommc.modularui.utils.NumberFormat; import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityDrum; @@ -50,60 +49,67 @@ public boolean hasTileEntity(int metadata) { } @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, - int side, float hitX, float hitY, float hitZ) { + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, + float hitY, float hitZ) { ItemStack heldItem = player.getCurrentEquippedItem(); - if (heldItem == null) return false; + if (heldItem == null) { + return false; + } TileEntity tile = world.getTileEntity(x, y, z); - if (!(tile instanceof TileEntityDrum drum)) return false; - - FluidTank tank = drum.tank; - FluidStack fluid = null; - int containerCapacity = 1000; - - Item item = heldItem.getItem(); - if (item instanceof IFluidContainerItem fluidContainer) { - fluid = fluidContainer.getFluid(heldItem); - containerCapacity = fluidContainer.getCapacity(heldItem); - } else { - fluid = FluidContainerRegistry.getFluidForFilledItem(heldItem); + if (!(tile instanceof TileEntityDrum drum)) { + return false; } - if (fluid == null && FluidContainerRegistry.isEmptyContainer(heldItem)) { + FluidTank tank = drum.tank; + if (FluidContainerRegistry.isEmptyContainer(heldItem)) { FluidStack stored = tank.getFluid(); - if (stored == null || stored.amount <= 0) return false; + if (stored == null || stored.amount <= 0) { + return false; + } - int transferAmount = Math.min(containerCapacity, stored.amount); - FluidStack toFill = new FluidStack(stored.getFluid(), transferAmount); + FluidStack available = new FluidStack(stored.getFluid(), Math.min(1000, stored.amount)); + ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(available, heldItem); + if (filledContainer == null) { + return false; + } + + FluidStack fluidInContainer = FluidContainerRegistry.getFluidForFilledItem(filledContainer); + if (fluidInContainer == null) return false; - ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(toFill, heldItem); - if (filledContainer == null) return false; // Not a valid container + tank.drain(fluidInContainer.amount, true); - tank.drain(transferAmount, true); if (!player.capabilities.isCreativeMode) { - heldItem.stackSize--; - if (heldItem.stackSize <= 0) { + if (heldItem.stackSize == 1) { player.inventory.setInventorySlotContents(player.inventory.currentItem, filledContainer); } else { + heldItem.stackSize--; if (!player.inventory.addItemStackToInventory(filledContainer)) { player.dropPlayerItemWithRandomChoice(filledContainer, false); } - player.inventory.setInventorySlotContents(player.inventory.currentItem, heldItem); } player.inventory.markDirty(); } + drum.markDirty(); world.markBlockForUpdate(x, y, z); return true; } - else if (fluid != null) { + FluidStack fluid = null; + Item item = heldItem.getItem(); + + if (item instanceof IFluidContainerItem fluidContainer) { + fluid = fluidContainer.getFluid(heldItem); + } else { + fluid = FluidContainerRegistry.getFluidForFilledItem(heldItem); + } + + if (fluid != null && fluid.getFluid() != null) { int filled = tank.fill(fluid, true); if (filled > 0) { - ItemStack emptyContainer = null; if (item instanceof IFluidContainerItem fluidContainer) { @@ -114,27 +120,26 @@ else if (fluid != null) { } if (!player.capabilities.isCreativeMode) { - heldItem.stackSize--; - if (heldItem.stackSize <= 0) { + if (heldItem.stackSize == 1) { player.inventory.setInventorySlotContents(player.inventory.currentItem, emptyContainer); } else { + heldItem.stackSize--; if (emptyContainer != null && !player.inventory.addItemStackToInventory(emptyContainer)) { player.dropPlayerItemWithRandomChoice(emptyContainer, false); } - player.inventory.setInventorySlotContents(player.inventory.currentItem, heldItem); } player.inventory.markDirty(); } + drum.markDirty(); world.markBlockForUpdate(x, y, z); return true; } } + return false; } - - @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, placer, stack); From b3d0fb4a4599252f0c733e029f3bdafad714a30d Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sat, 8 Nov 2025 00:00:13 -0700 Subject: [PATCH 04/18] chat components --- .../common/blocks/BlockDrum.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index f8564031..ffa0c60f 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -14,6 +14,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidContainerRegistry; @@ -89,7 +90,21 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if (!player.inventory.addItemStackToInventory(filledContainer)) { player.dropPlayerItemWithRandomChoice(filledContainer, false); } + + } + if (!world.isRemote) { + if (drum.tank.getFluid() == null) { + player.addChatMessage(new ChatComponentTranslation("tile.drum.chat.empty")); + } else { + player.addChatMessage( + new ChatComponentTranslation( + "tile.drum.chat.filled", + drum.tank.getFluid() + .getLocalizedName(), + NumberFormat.DEFAULT.format(drum.tank.getFluid().amount))); + } } + player.inventory.markDirty(); } @@ -127,7 +142,17 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if (emptyContainer != null && !player.inventory.addItemStackToInventory(emptyContainer)) { player.dropPlayerItemWithRandomChoice(emptyContainer, false); } + } + if (world.isRemote) { + player.addChatMessage( + new ChatComponentTranslation( + "tile.drum.chat.filled", + drum.tank.getFluid() + .getLocalizedName(), + NumberFormat.DEFAULT.format(drum.tank.getFluid().amount))); + } + player.inventory.markDirty(); } From 9387f063dbbc79b2e519320acc4b6ef2e835a16f Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sat, 8 Nov 2025 11:33:59 -0700 Subject: [PATCH 05/18] this appears to be wrong but. ahhhhhhhhhhhh --- .../common/tileentities/TileEntityDrum.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java index c4c99249..0864f1e2 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -12,6 +12,12 @@ public class TileEntityDrum extends TileEntity implements IFluidHandler { public final FluidTank tank; + public final int DEFAULT_CAPACITY = 16000; + + + public TileEntityDrum() { + tank = new FluidTank(DEFAULT_CAPACITY); + } public TileEntityDrum(int capacity) { super(); From 4e998fc10ca0d78fbfb20a8a8ef458df64a97aaa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Nov 2025 11:40:02 -0700 Subject: [PATCH 06/18] Spotless apply for branch kath/fix-drums for #55 (#56) Co-authored-by: GitHub GTNH Actions <> --- .../utilitiesinexcess/common/tileentities/TileEntityDrum.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java index 0864f1e2..4a47a177 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -14,7 +14,6 @@ public class TileEntityDrum extends TileEntity implements IFluidHandler { public final FluidTank tank; public final int DEFAULT_CAPACITY = 16000; - public TileEntityDrum() { tank = new FluidTank(DEFAULT_CAPACITY); } From 9bb2f50f100928ccda8ee30de534399a432783ea Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sat, 8 Nov 2025 11:46:44 -0700 Subject: [PATCH 07/18] works now :wowa: --- .../common/tileentities/TileEntityDrum.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java index 0864f1e2..4c4e6941 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -11,17 +11,16 @@ public class TileEntityDrum extends TileEntity implements IFluidHandler { - public final FluidTank tank; + public FluidTank tank = new FluidTank(0); public final int DEFAULT_CAPACITY = 16000; public TileEntityDrum() { - tank = new FluidTank(DEFAULT_CAPACITY); } public TileEntityDrum(int capacity) { super(); - this.tank = new FluidTank(capacity); + tank = new FluidTank(capacity); } public void setTank(FluidTank tank) { From a375e4f92ba8d984da92f2c0d567132dac6bdf08 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sat, 8 Nov 2025 13:33:19 -0700 Subject: [PATCH 08/18] cut off one head two grow back --- .../utilitiesinexcess/common/blocks/BlockDrum.java | 11 +++++++++-- .../common/tileentities/TileEntityDrum.java | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index ffa0c60f..e4885d85 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -52,7 +52,7 @@ public boolean hasTileEntity(int metadata) { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - + FluidTank tank = null; ItemStack heldItem = player.getCurrentEquippedItem(); if (heldItem == null) { return false; @@ -63,7 +63,14 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return false; } - FluidTank tank = drum.tank; + if(!world.isRemote) { + tank = drum.tank; + } + + if(tank == null){ + return true; + } + if (FluidContainerRegistry.isEmptyContainer(heldItem)) { FluidStack stored = tank.getFluid(); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java index a3890fa4..186f13eb 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -12,9 +12,9 @@ public class TileEntityDrum extends TileEntity implements IFluidHandler { public FluidTank tank = new FluidTank(0); - public final int DEFAULT_CAPACITY = 16000; public TileEntityDrum() { + this(16000); } public TileEntityDrum(int capacity) { From 4f300a203167b114d909dfc1c43f3d0a1891a67c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Nov 2025 18:39:01 +0100 Subject: [PATCH 09/18] Spotless apply for branch kath/fix-drums for #55 (#57) Co-authored-by: GitHub GTNH Actions <> --- .../utilitiesinexcess/common/blocks/BlockDrum.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index e4885d85..866e21f2 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -63,15 +63,14 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return false; } - if(!world.isRemote) { + if (!world.isRemote) { tank = drum.tank; } - if(tank == null){ + if (tank == null) { return true; } - if (FluidContainerRegistry.isEmptyContainer(heldItem)) { FluidStack stored = tank.getFluid(); if (stored == null || stored.amount <= 0) { From cebe461cb7457ebfa9c983c8b10787f334217bc0 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sat, 13 Dec 2025 16:56:38 -0700 Subject: [PATCH 10/18] halfway ? done --- .../common/blocks/BlockDrum.java | 173 ++++++++---------- 1 file changed, 75 insertions(+), 98 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index 866e21f2..d8e0aa8a 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -9,8 +9,10 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemBucket; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -52,125 +54,100 @@ public boolean hasTileEntity(int metadata) { @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - FluidTank tank = null; - ItemStack heldItem = player.getCurrentEquippedItem(); - if (heldItem == null) { - return false; - } - TileEntity tile = world.getTileEntity(x, y, z); - if (!(tile instanceof TileEntityDrum drum)) { - return false; - } + TileEntity te = world.getTileEntity(x, y, z); - if (!world.isRemote) { - tank = drum.tank; - } + // all the drum things in variables so i can just ref them later xd + if(!(te instanceof TileEntityDrum drum)) return false; + FluidTank drumTank = drum.tank; + FluidStack fluid = drumTank.getFluid(); + int capacity = drumTank.getCapacity(); - if (tank == null) { - return true; + ItemStack itemStack = player.getItemInUse(); + Item item = itemStack.getItem(); + if(item == null){ + return false; } - if (FluidContainerRegistry.isEmptyContainer(heldItem)) { - FluidStack stored = tank.getFluid(); - if (stored == null || stored.amount <= 0) { - return false; - } - - FluidStack available = new FluidStack(stored.getFluid(), Math.min(1000, stored.amount)); - ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(available, heldItem); - if (filledContainer == null) { - return false; - } - - FluidStack fluidInContainer = FluidContainerRegistry.getFluidForFilledItem(filledContainer); - if (fluidInContainer == null) return false; - - tank.drain(fluidInContainer.amount, true); - - if (!player.capabilities.isCreativeMode) { - if (heldItem.stackSize == 1) { - player.inventory.setInventorySlotContents(player.inventory.currentItem, filledContainer); - } else { - heldItem.stackSize--; - if (!player.inventory.addItemStackToInventory(filledContainer)) { - player.dropPlayerItemWithRandomChoice(filledContainer, false); - } - - } - if (!world.isRemote) { - if (drum.tank.getFluid() == null) { - player.addChatMessage(new ChatComponentTranslation("tile.drum.chat.empty")); - } else { - player.addChatMessage( + if(fluid == null){ + //empty drum cases + if(item instanceof IFluidContainerItem fluidTank){ + FluidStack playerFluid = fluidTank.getFluid(itemStack); + int playerCapacity = fluidTank.getCapacity(itemStack); + + if( playerFluid== null){ + //both the tank and the drum are false + return false; + }else{ + //either the capacity of the drum, or the amount in the player hand + int fillAmount = Math.min(capacity, playerCapacity); + //copy the fluid add hte amount and fill the drum and empty the hand + FluidStack fillFluid = playerFluid.copy(); + fillFluid.amount = fillAmount; + int filedAmount = drumTank.fill(fillFluid, true); + fluidTank.drain(itemStack, filedAmount, true); + + //todo: pull this to its own helper method? + if (!world.isRemote) { + player.addChatComponentMessage( new ChatComponentTranslation( - "tile.drum.chat.filled", - drum.tank.getFluid() - .getLocalizedName(), - NumberFormat.DEFAULT.format(drum.tank.getFluid().amount))); + "message.drum.filled", + filedAmount, + playerFluid.getLocalizedName() + ) + ); } - } - - player.inventory.markDirty(); - } - - drum.markDirty(); - world.markBlockForUpdate(x, y, z); - return true; - } - - FluidStack fluid = null; - Item item = heldItem.getItem(); - - if (item instanceof IFluidContainerItem fluidContainer) { - fluid = fluidContainer.getFluid(heldItem); - } else { - fluid = FluidContainerRegistry.getFluidForFilledItem(heldItem); - } - - if (fluid != null && fluid.getFluid() != null) { - int filled = tank.fill(fluid, true); - if (filled > 0) { - ItemStack emptyContainer = null; - if (item instanceof IFluidContainerItem fluidContainer) { - fluidContainer.drain(heldItem, filled, true); - emptyContainer = heldItem; - } else { - emptyContainer = FluidContainerRegistry.drainFluidContainer(heldItem); + world.markBlockForUpdate(x, y, z); + return true; } - if (!player.capabilities.isCreativeMode) { - if (heldItem.stackSize == 1) { - player.inventory.setInventorySlotContents(player.inventory.currentItem, emptyContainer); - } else { - heldItem.stackSize--; - if (emptyContainer != null && !player.inventory.addItemStackToInventory(emptyContainer)) { - player.dropPlayerItemWithRandomChoice(emptyContainer, false); - } - - } - if (world.isRemote) { - player.addChatMessage( + } + //empty and full bucket, maybe can pull this out to a helper method as well? + else if(item instanceof ItemBucket){ + + FluidStack bucketFluid = FluidContainerRegistry.getFluidForFilledItem(itemStack); + //this SHOULD be 1000 i THINK + int fillAmount = Math.min(capacity, bucketFluid.amount); + FluidStack fillFluid = bucketFluid.copy(); + fillFluid.amount = fillAmount; + int filedAmount = drumTank.fill(fillFluid, true); + + //if the drum works? + if (filedAmount > 0){ + + if(!world.isRemote) { + player.inventory.setInventorySlotContents( + player.inventory.currentItem, + new ItemStack(Items.bucket) + ); + + player.addChatComponentMessage( new ChatComponentTranslation( - "tile.drum.chat.filled", - drum.tank.getFluid() - .getLocalizedName(), - NumberFormat.DEFAULT.format(drum.tank.getFluid().amount))); + "message.drum.filled", + fillAmount, + fillFluid.getLocalizedName() + ) + ); } + world.markBlockForUpdate(x, y, z); + return true; - player.inventory.markDirty(); } - drum.markDirty(); - world.markBlockForUpdate(x, y, z); - return true; } } + // if the drum is full + else{ + return false; + } return false; } + + + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, placer, stack); From 8e67bebbe03912484363e45c9900133824956f34 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 13 Dec 2025 19:28:55 -0500 Subject: [PATCH 11/18] Spotless apply for branch kath/fix-drums for #55 (#99) Co-authored-by: GitHub GTNH Actions <> --- .../common/blocks/BlockDrum.java | 59 ++++++++----------- 1 file changed, 25 insertions(+), 34 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index d8e0aa8a..88f25470 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -57,45 +57,43 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p TileEntity te = world.getTileEntity(x, y, z); - // all the drum things in variables so i can just ref them later xd - if(!(te instanceof TileEntityDrum drum)) return false; + // all the drum things in variables so i can just ref them later xd + if (!(te instanceof TileEntityDrum drum)) return false; FluidTank drumTank = drum.tank; - FluidStack fluid = drumTank.getFluid(); + FluidStack fluid = drumTank.getFluid(); int capacity = drumTank.getCapacity(); ItemStack itemStack = player.getItemInUse(); Item item = itemStack.getItem(); - if(item == null){ + if (item == null) { return false; } - if(fluid == null){ - //empty drum cases - if(item instanceof IFluidContainerItem fluidTank){ + if (fluid == null) { + // empty drum cases + if (item instanceof IFluidContainerItem fluidTank) { FluidStack playerFluid = fluidTank.getFluid(itemStack); int playerCapacity = fluidTank.getCapacity(itemStack); - if( playerFluid== null){ - //both the tank and the drum are false + if (playerFluid == null) { + // both the tank and the drum are false return false; - }else{ - //either the capacity of the drum, or the amount in the player hand + } else { + // either the capacity of the drum, or the amount in the player hand int fillAmount = Math.min(capacity, playerCapacity); - //copy the fluid add hte amount and fill the drum and empty the hand + // copy the fluid add hte amount and fill the drum and empty the hand FluidStack fillFluid = playerFluid.copy(); fillFluid.amount = fillAmount; int filedAmount = drumTank.fill(fillFluid, true); fluidTank.drain(itemStack, filedAmount, true); - //todo: pull this to its own helper method? + // todo: pull this to its own helper method? if (!world.isRemote) { player.addChatComponentMessage( new ChatComponentTranslation( "message.drum.filled", filedAmount, - playerFluid.getLocalizedName() - ) - ); + playerFluid.getLocalizedName())); } world.markBlockForUpdate(x, y, z); @@ -103,32 +101,28 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } } - //empty and full bucket, maybe can pull this out to a helper method as well? - else if(item instanceof ItemBucket){ + // empty and full bucket, maybe can pull this out to a helper method as well? + else if (item instanceof ItemBucket) { FluidStack bucketFluid = FluidContainerRegistry.getFluidForFilledItem(itemStack); - //this SHOULD be 1000 i THINK + // this SHOULD be 1000 i THINK int fillAmount = Math.min(capacity, bucketFluid.amount); FluidStack fillFluid = bucketFluid.copy(); fillFluid.amount = fillAmount; int filedAmount = drumTank.fill(fillFluid, true); - //if the drum works? - if (filedAmount > 0){ + // if the drum works? + if (filedAmount > 0) { - if(!world.isRemote) { - player.inventory.setInventorySlotContents( - player.inventory.currentItem, - new ItemStack(Items.bucket) - ); + if (!world.isRemote) { + player.inventory + .setInventorySlotContents(player.inventory.currentItem, new ItemStack(Items.bucket)); player.addChatComponentMessage( new ChatComponentTranslation( "message.drum.filled", fillAmount, - fillFluid.getLocalizedName() - ) - ); + fillFluid.getLocalizedName())); } world.markBlockForUpdate(x, y, z); return true; @@ -138,16 +132,13 @@ else if(item instanceof ItemBucket){ } } // if the drum is full - else{ + else { - return false; + return false; } return false; } - - - @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, placer, stack); From 2479af4a29204b933bd7a3badd2f71987e367e25 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:27:16 -0700 Subject: [PATCH 12/18] other half --- dependencies.gradle | 2 +- .../common/blocks/BlockDrum.java | 131 ++++++++++++++++-- 2 files changed, 123 insertions(+), 10 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 89f37cb4..c6689fef 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -34,7 +34,7 @@ * For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph */ dependencies { - implementation("com.github.GTNewHorizons:GTNHLib:0.8.31:dev") + implementation("com.github.GTNewHorizons:GTNHLib:0.8.32:dev") // TODO: remove MUI1 dep when the implicit dependency // TODO: in IItemHandlerModifiable is removed api("com.github.GTNewHorizons:ModularUI:1.3.1:dev") diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index d8e0aa8a..9733da12 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -63,11 +63,23 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p FluidStack fluid = drumTank.getFluid(); int capacity = drumTank.getCapacity(); - ItemStack itemStack = player.getItemInUse(); - Item item = itemStack.getItem(); - if(item == null){ - return false; + ItemStack itemStack = player.inventory.getCurrentItem(); + if (itemStack == null) { + if(world.isRemote) { + return false; + } + + // Print drum capacity to player chat + player.addChatComponentMessage( + new ChatComponentTranslation( + "%s mB", + NumberFormat.DEFAULT.format(drumTank.getFluidAmount()) + ) + ); + return true; } + Item item = itemStack.getItem(); + if(fluid == null){ //empty drum cases @@ -77,7 +89,7 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if( playerFluid== null){ //both the tank and the drum are false - return false; + return true; }else{ //either the capacity of the drum, or the amount in the player hand int fillAmount = Math.min(capacity, playerCapacity); @@ -107,6 +119,9 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p else if(item instanceof ItemBucket){ FluidStack bucketFluid = FluidContainerRegistry.getFluidForFilledItem(itemStack); + if(bucketFluid == null){ + return false; + } //this SHOULD be 1000 i THINK int fillAmount = Math.min(capacity, bucketFluid.amount); FluidStack fillFluid = bucketFluid.copy(); @@ -131,18 +146,116 @@ else if(item instanceof ItemBucket){ ); } world.markBlockForUpdate(x, y, z); - return true; } } } - // if the drum is full + // if the drum has any fluid at all else{ + if ( item instanceof IFluidContainerItem fluidItem){ + + FluidStack itemFluid = fluidItem.getFluid(itemStack); + + if( itemFluid != null && !itemFluid.isFluidEqual(fluid)){ + return true; + } + + int space = fluidItem.getCapacity(itemStack) + - (itemFluid == null ? 0 : itemFluid.amount); + + if (space <= 0) return false; + int transfer = Math.min(space, fluid.amount); + FluidStack transferFluid = fluid.copy(); + transferFluid.amount = transfer; + + int filled = fluidItem.fill(itemStack, transferFluid, true); + drumTank.drain(filled, true); + + if (!world.isRemote) { + player.addChatComponentMessage( + new ChatComponentTranslation( + "message.drum.drained", + filled, + fluid.getLocalizedName() + ) + ); + } + + world.markBlockForUpdate(x, y, z); + return true; + + } + + else if (item instanceof ItemBucket) { + + FluidStack bucketFluid = + FluidContainerRegistry.getFluidForFilledItem(itemStack); + if (bucketFluid != null) { + if (fluid != null && !fluid.isFluidEqual(bucketFluid)) { + return true; + } + int fill = drumTank.fill(bucketFluid.copy(), true); + + if (fill < FluidContainerRegistry.BUCKET_VOLUME) { + return true; + } + + if (!world.isRemote) { + player.inventory.setInventorySlotContents( + player.inventory.currentItem, + new ItemStack(Items.bucket) + ); + + player.addChatComponentMessage( + new ChatComponentTranslation( + "message.drum.filled", + FluidContainerRegistry.BUCKET_VOLUME, + bucketFluid.getLocalizedName() + ) + ); + } + + world.markBlockForUpdate(x, y, z); + return true; + } + if (fluid == null || fluid.amount < FluidContainerRegistry.BUCKET_VOLUME) { + return true; + } + + FluidStack take = fluid.copy(); + take.amount = FluidContainerRegistry.BUCKET_VOLUME; + + ItemStack filledBucket = + FluidContainerRegistry.fillFluidContainer(take, itemStack); + + if (filledBucket == null) { + return true; + } + + if (!world.isRemote) { + player.inventory.setInventorySlotContents( + player.inventory.currentItem, + filledBucket + ); + + player.addChatComponentMessage( + new ChatComponentTranslation( + "message.drum.drained", + FluidContainerRegistry.BUCKET_VOLUME, + fluid.getLocalizedName() + ) + ); + } + + drumTank.drain(FluidContainerRegistry.BUCKET_VOLUME, true); + world.markBlockForUpdate(x, y, z); + return true; + } + - return false; } - return false; + return true; } From 8b936a8e7f3a8327cdf3c1a342d3182c2fe43f27 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sat, 13 Dec 2025 18:29:08 -0700 Subject: [PATCH 13/18] spotless but i missed a case --- .../common/blocks/BlockDrum.java | 114 +++++++----------- 1 file changed, 41 insertions(+), 73 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index 9733da12..0b176825 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -57,57 +57,50 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p TileEntity te = world.getTileEntity(x, y, z); - // all the drum things in variables so i can just ref them later xd - if(!(te instanceof TileEntityDrum drum)) return false; + // all the drum things in variables so i can just ref them later xd + if (!(te instanceof TileEntityDrum drum)) return false; FluidTank drumTank = drum.tank; - FluidStack fluid = drumTank.getFluid(); + FluidStack fluid = drumTank.getFluid(); int capacity = drumTank.getCapacity(); ItemStack itemStack = player.inventory.getCurrentItem(); if (itemStack == null) { - if(world.isRemote) { + if (world.isRemote) { return false; } - // Print drum capacity to player chat - player.addChatComponentMessage( - new ChatComponentTranslation( - "%s mB", - NumberFormat.DEFAULT.format(drumTank.getFluidAmount()) - ) - ); - return true; + // Print drum capacity to player chat + player.addChatComponentMessage( + new ChatComponentTranslation("%s mB", NumberFormat.DEFAULT.format(drumTank.getFluidAmount()))); + return true; } Item item = itemStack.getItem(); - - if(fluid == null){ - //empty drum cases - if(item instanceof IFluidContainerItem fluidTank){ + if (fluid == null) { + // empty drum cases + if (item instanceof IFluidContainerItem fluidTank) { FluidStack playerFluid = fluidTank.getFluid(itemStack); int playerCapacity = fluidTank.getCapacity(itemStack); - if( playerFluid== null){ - //both the tank and the drum are false + if (playerFluid == null) { + // both the tank and the drum are false return true; - }else{ - //either the capacity of the drum, or the amount in the player hand + } else { + // either the capacity of the drum, or the amount in the player hand int fillAmount = Math.min(capacity, playerCapacity); - //copy the fluid add hte amount and fill the drum and empty the hand + // copy the fluid add hte amount and fill the drum and empty the hand FluidStack fillFluid = playerFluid.copy(); fillFluid.amount = fillAmount; int filedAmount = drumTank.fill(fillFluid, true); fluidTank.drain(itemStack, filedAmount, true); - //todo: pull this to its own helper method? + // todo: pull this to its own helper method? if (!world.isRemote) { player.addChatComponentMessage( new ChatComponentTranslation( "message.drum.filled", filedAmount, - playerFluid.getLocalizedName() - ) - ); + playerFluid.getLocalizedName())); } world.markBlockForUpdate(x, y, z); @@ -115,35 +108,31 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } } - //empty and full bucket, maybe can pull this out to a helper method as well? - else if(item instanceof ItemBucket){ + // empty and full bucket, maybe can pull this out to a helper method as well? + else if (item instanceof ItemBucket) { FluidStack bucketFluid = FluidContainerRegistry.getFluidForFilledItem(itemStack); - if(bucketFluid == null){ + if (bucketFluid == null) { return false; } - //this SHOULD be 1000 i THINK + // this SHOULD be 1000 i THINK int fillAmount = Math.min(capacity, bucketFluid.amount); FluidStack fillFluid = bucketFluid.copy(); fillFluid.amount = fillAmount; int filedAmount = drumTank.fill(fillFluid, true); - //if the drum works? - if (filedAmount > 0){ + // if the drum works? + if (filedAmount > 0) { - if(!world.isRemote) { - player.inventory.setInventorySlotContents( - player.inventory.currentItem, - new ItemStack(Items.bucket) - ); + if (!world.isRemote) { + player.inventory + .setInventorySlotContents(player.inventory.currentItem, new ItemStack(Items.bucket)); player.addChatComponentMessage( new ChatComponentTranslation( "message.drum.filled", fillAmount, - fillFluid.getLocalizedName() - ) - ); + fillFluid.getLocalizedName())); } world.markBlockForUpdate(x, y, z); @@ -152,17 +141,16 @@ else if(item instanceof ItemBucket){ } } // if the drum has any fluid at all - else{ - if ( item instanceof IFluidContainerItem fluidItem){ + else { + if (item instanceof IFluidContainerItem fluidItem) { FluidStack itemFluid = fluidItem.getFluid(itemStack); - if( itemFluid != null && !itemFluid.isFluidEqual(fluid)){ - return true; + if (itemFluid != null && !itemFluid.isFluidEqual(fluid)) { + return true; } - int space = fluidItem.getCapacity(itemStack) - - (itemFluid == null ? 0 : itemFluid.amount); + int space = fluidItem.getCapacity(itemStack) - (itemFluid == null ? 0 : itemFluid.amount); if (space <= 0) return false; int transfer = Math.min(space, fluid.amount); @@ -174,12 +162,7 @@ else if(item instanceof ItemBucket){ if (!world.isRemote) { player.addChatComponentMessage( - new ChatComponentTranslation( - "message.drum.drained", - filled, - fluid.getLocalizedName() - ) - ); + new ChatComponentTranslation("message.drum.drained", filled, fluid.getLocalizedName())); } world.markBlockForUpdate(x, y, z); @@ -189,8 +172,7 @@ else if(item instanceof ItemBucket){ else if (item instanceof ItemBucket) { - FluidStack bucketFluid = - FluidContainerRegistry.getFluidForFilledItem(itemStack); + FluidStack bucketFluid = FluidContainerRegistry.getFluidForFilledItem(itemStack); if (bucketFluid != null) { if (fluid != null && !fluid.isFluidEqual(bucketFluid)) { return true; @@ -202,18 +184,14 @@ else if (item instanceof ItemBucket) { } if (!world.isRemote) { - player.inventory.setInventorySlotContents( - player.inventory.currentItem, - new ItemStack(Items.bucket) - ); + player.inventory + .setInventorySlotContents(player.inventory.currentItem, new ItemStack(Items.bucket)); player.addChatComponentMessage( new ChatComponentTranslation( "message.drum.filled", FluidContainerRegistry.BUCKET_VOLUME, - bucketFluid.getLocalizedName() - ) - ); + bucketFluid.getLocalizedName())); } world.markBlockForUpdate(x, y, z); @@ -226,26 +204,20 @@ else if (item instanceof ItemBucket) { FluidStack take = fluid.copy(); take.amount = FluidContainerRegistry.BUCKET_VOLUME; - ItemStack filledBucket = - FluidContainerRegistry.fillFluidContainer(take, itemStack); + ItemStack filledBucket = FluidContainerRegistry.fillFluidContainer(take, itemStack); if (filledBucket == null) { return true; } if (!world.isRemote) { - player.inventory.setInventorySlotContents( - player.inventory.currentItem, - filledBucket - ); + player.inventory.setInventorySlotContents(player.inventory.currentItem, filledBucket); player.addChatComponentMessage( new ChatComponentTranslation( "message.drum.drained", FluidContainerRegistry.BUCKET_VOLUME, - fluid.getLocalizedName() - ) - ); + fluid.getLocalizedName())); } drumTank.drain(FluidContainerRegistry.BUCKET_VOLUME, true); @@ -253,14 +225,10 @@ else if (item instanceof ItemBucket) { return true; } - } return true; } - - - @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, placer, stack); From 57455893edc31168d4812297132c8fbe936ca657 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Sat, 13 Dec 2025 22:58:50 -0700 Subject: [PATCH 14/18] im a bad programmer --- .../common/blocks/BlockDrum.java | 34 ++++++++++++++----- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index 1b6d4dff..b358ff33 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -125,8 +125,8 @@ else if (item instanceof ItemBucket) { if (filedAmount > 0) { if (!world.isRemote) { - player.inventory - .setInventorySlotContents(player.inventory.currentItem, new ItemStack(Items.bucket)); + + consumeItemStack(player, itemStack, new ItemStack(Items.bucket)); player.addChatComponentMessage( new ChatComponentTranslation( @@ -156,11 +156,17 @@ else if (item instanceof ItemBucket) { int transfer = Math.min(space, fluid.amount); FluidStack transferFluid = fluid.copy(); transferFluid.amount = transfer; + ItemStack single = itemStack.copy(); + single.stackSize = 1; + + int filled = fluidItem.fill(single, transferFluid, true); + if (filled <= 0) return true; - int filled = fluidItem.fill(itemStack, transferFluid, true); drumTank.drain(filled, true); if (!world.isRemote) { + consumeItemStack(player, itemStack, single); + player.addChatComponentMessage( new ChatComponentTranslation("message.drum.drained", filled, fluid.getLocalizedName())); } @@ -205,13 +211,10 @@ else if (item instanceof ItemBucket) { take.amount = FluidContainerRegistry.BUCKET_VOLUME; ItemStack filledBucket = FluidContainerRegistry.fillFluidContainer(take, itemStack); - - if (filledBucket == null) { - return true; - } + if (filledBucket == null) return true; if (!world.isRemote) { - player.inventory.setInventorySlotContents(player.inventory.currentItem, filledBucket); + consumeItemStack(player, itemStack, filledBucket); player.addChatComponentMessage( new ChatComponentTranslation( @@ -223,12 +226,27 @@ else if (item instanceof ItemBucket) { drumTank.drain(FluidContainerRegistry.BUCKET_VOLUME, true); world.markBlockForUpdate(x, y, z); return true; + } } return true; } + private static void consumeItemStack(EntityPlayer player, ItemStack hand, ItemStack result) { + if (hand.stackSize == 1) { + player.inventory.setInventorySlotContents(player.inventory.currentItem, result); + } else { + hand.stackSize--; + if (!player.inventory.addItemStackToInventory(result)) { + player.dropPlayerItemWithRandomChoice(result, false); + } + } + player.inventoryContainer.detectAndSendChanges(); + player.inventory.markDirty(); + + } + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, placer, stack); From a5a0641abec6d5c932fd75f202bb5ec6334a3420 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Mon, 15 Dec 2025 13:04:06 -0700 Subject: [PATCH 15/18] address comments --- .../utilitiesinexcess/common/blocks/BlockDrum.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index b358ff33..33d2ebf6 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -147,7 +147,7 @@ else if (item instanceof ItemBucket) { FluidStack itemFluid = fluidItem.getFluid(itemStack); if (itemFluid != null && !itemFluid.isFluidEqual(fluid)) { - return true; + return false; } int space = fluidItem.getCapacity(itemStack) - (itemFluid == null ? 0 : itemFluid.amount); @@ -160,7 +160,7 @@ else if (item instanceof ItemBucket) { single.stackSize = 1; int filled = fluidItem.fill(single, transferFluid, true); - if (filled <= 0) return true; + if (filled <= 0) return false; drumTank.drain(filled, true); @@ -181,14 +181,16 @@ else if (item instanceof ItemBucket) { FluidStack bucketFluid = FluidContainerRegistry.getFluidForFilledItem(itemStack); if (bucketFluid != null) { if (fluid != null && !fluid.isFluidEqual(bucketFluid)) { - return true; + return false; } - int fill = drumTank.fill(bucketFluid.copy(), true); + int fill = drumTank.fill(bucketFluid.copy(), false); if (fill < FluidContainerRegistry.BUCKET_VOLUME) { - return true; + return false; } + drumTank.fill(bucketFluid.copy(), true); + if (!world.isRemote) { player.inventory .setInventorySlotContents(player.inventory.currentItem, new ItemStack(Items.bucket)); From 89550df8bfc9398835b847fde5e43c0ee0002c46 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Mon, 15 Dec 2025 13:10:52 -0700 Subject: [PATCH 16/18] address comments --- .../common/blocks/BlockDrum.java | 11 +++++++++-- .../config/blocks/DrumConfig.java | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index 33d2ebf6..85b8ee96 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; +import com.fouristhenumber.utilitiesinexcess.config.blocks.DrumConfig; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -70,8 +71,14 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } // Print drum capacity to player chat - player.addChatComponentMessage( - new ChatComponentTranslation("%s mB", NumberFormat.DEFAULT.format(drumTank.getFluidAmount()))); + player.addChatComponentMessage( + new ChatComponentTranslation( + "%s %s", + NumberFormat.DEFAULT.format(drumTank.getFluidAmount()), + DrumConfig.unitToDisplay ? "mB" : "L" + ) + ); + return true; } Item item = itemStack.getItem(); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java new file mode 100644 index 00000000..6073594c --- /dev/null +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java @@ -0,0 +1,15 @@ +package com.fouristhenumber.utilitiesinexcess.config.blocks; + +import com.fouristhenumber.utilitiesinexcess.UtilitiesInExcess; +import com.gtnewhorizon.gtnhlib.config.Config; + +@Config(modid = UtilitiesInExcess.MODID, category = "blocks.drum") + +public class DrumConfig { + + @Config.DefaultBoolean(true) + @Config.Comment("Change it to MB vs L's") + public static boolean unitToDisplay; + + +} From 56ce020416f379242c8ba5819f5b4ff512931a78 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Mon, 15 Dec 2025 13:48:54 -0700 Subject: [PATCH 17/18] oops all issues --- .../common/blocks/BlockDrum.java | 18 ++++++++---------- .../common/tileentities/TileEntityDrum.java | 2 +- .../config/blocks/DrumConfig.java | 1 - 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java index 85b8ee96..6f1c8d3c 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.List; -import com.fouristhenumber.utilitiesinexcess.config.blocks.DrumConfig; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -27,6 +26,7 @@ import com.cleanroommc.modularui.utils.NumberFormat; import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityDrum; +import com.fouristhenumber.utilitiesinexcess.config.blocks.DrumConfig; public class BlockDrum extends BlockContainer { @@ -71,13 +71,11 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } // Print drum capacity to player chat - player.addChatComponentMessage( - new ChatComponentTranslation( - "%s %s", - NumberFormat.DEFAULT.format(drumTank.getFluidAmount()), - DrumConfig.unitToDisplay ? "mB" : "L" - ) - ); + player.addChatComponentMessage( + new ChatComponentTranslation( + "%s %s", + NumberFormat.DEFAULT.format(drumTank.getFluidAmount()), + DrumConfig.unitToDisplay ? "mB" : "L")); return true; } @@ -213,14 +211,14 @@ else if (item instanceof ItemBucket) { return true; } if (fluid == null || fluid.amount < FluidContainerRegistry.BUCKET_VOLUME) { - return true; + return false; } FluidStack take = fluid.copy(); take.amount = FluidContainerRegistry.BUCKET_VOLUME; ItemStack filledBucket = FluidContainerRegistry.fillFluidContainer(take, itemStack); - if (filledBucket == null) return true; + if (filledBucket == null) return false; if (!world.isRemote) { consumeItemStack(player, itemStack, filledBucket); diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java index 186f13eb..968a5402 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -14,7 +14,7 @@ public class TileEntityDrum extends TileEntity implements IFluidHandler { public FluidTank tank = new FluidTank(0); public TileEntityDrum() { - this(16000); + this(256000); } public TileEntityDrum(int capacity) { diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java index 6073594c..a3e5206e 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java @@ -11,5 +11,4 @@ public class DrumConfig { @Config.Comment("Change it to MB vs L's") public static boolean unitToDisplay; - } From 50a59c666fd0d61d465682915f75db08fb2a4f34 Mon Sep 17 00:00:00 2001 From: Spicierspace153 <21964509+Spicierspace153@users.noreply.github.com> Date: Mon, 15 Dec 2025 14:00:49 -0700 Subject: [PATCH 18/18] ij should commit htis --- .../common/tileentities/TileEntityDrum.java | 4 +++- .../utilitiesinexcess/config/blocks/DrumConfig.java | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java index 968a5402..2d7ece45 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -9,12 +9,14 @@ import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import com.fouristhenumber.utilitiesinexcess.config.blocks.DrumConfig; + public class TileEntityDrum extends TileEntity implements IFluidHandler { public FluidTank tank = new FluidTank(0); public TileEntityDrum() { - this(256000); + this(DrumConfig.drumSize); } public TileEntityDrum(int capacity) { diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java index a3e5206e..98c0db88 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/config/blocks/DrumConfig.java @@ -11,4 +11,9 @@ public class DrumConfig { @Config.Comment("Change it to MB vs L's") public static boolean unitToDisplay; + @Config.RangeInt(min = 16000, max = 256000) + @Config.Comment("size of the the drum") + @Config.DefaultInt(16000) + public static int drumSize; + }