From 7f8af873cd391cc9577835615333e39b2b66acd2 Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 14:10:39 -0400 Subject: [PATCH 01/13] Add bedrocium drum, try to fix model break particles --- .../utilitiesinexcess/ModBlocks.java | 3 +- .../common/blocks/BlockDrum.java | 7 +- .../common/tileentities/TileEntityDrum.java | 8 +- .../blockstates/bedrockium_drum.json | 5 + .../models/blocks/bedrockium_drum.json | 7 + .../models/blocks/diamond_spike.json | 3 +- .../utilitiesinexcess/models/blocks/drum.json | 135 +++++++++--------- .../models/blocks/giga_torch.json | 3 +- .../models/blocks/gold_spike.json | 3 +- .../models/blocks/iron_spike.json | 3 +- .../models/blocks/trash_can_energy.json | 3 +- .../models/blocks/trash_can_fluid.json | 3 +- .../models/blocks/trash_can_item.json | 3 +- .../models/blocks/wood_spike.json | 3 +- 14 files changed, 108 insertions(+), 81 deletions(-) create mode 100644 src/main/resources/assets/utilitiesinexcess/blockstates/bedrockium_drum.json create mode 100644 src/main/resources/assets/utilitiesinexcess/models/blocks/bedrockium_drum.json diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java index 45a25f7e..ea9bf51c 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java @@ -92,7 +92,8 @@ public enum ModBlocks { TRASH_CAN_ITEM(BlockConfig.enableTrashCanItem, new BlockTrashCanItem(), "trash_can_item"), TRASH_CAN_FLUID(BlockConfig.enableTrashCanFluid, new BlockTrashCanFluid(), "trash_can_fluid"), TRASH_CAN_ENERGY(BlockConfig.enableTrashCanEnergy, new BlockTrashCanEnergy(), "trash_can_energy"), - DRUM(BlockConfig.enableDrum, new BlockDrum(16000), BlockDrum.ItemBlockDrum.class, "drum"), + DRUM(BlockConfig.enableDrum, new BlockDrum(16000, "drum"), BlockDrum.ItemBlockDrum.class, "drum"), + BEDROCKIUM_DRUM(BlockConfig.enableDrum, new BlockDrum(64000, "bedrockium_drum"), BlockDrum.ItemBlockDrum.class, "bedrockium_drum"), SOUND_MUFFLER(BlockConfig.soundMuffler.enableSoundMuffler, new BlockSoundMuffler(), BlockSoundMuffler.ItemBlockSoundMuffler.class, "sound_muffler"), RAIN_MUFFLER(BlockConfig.rainMuffler.enableRainMuffler, new BlockRainMuffler(), BlockRainMuffler.ItemBlockRainMuffler.class, "rain_muffler"), MAGIC_WOOD(BlockConfig.enableMagicWood, new BlockMagicWood(), "magic_wood"), 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 24a00574..6984c7ae 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -9,11 +9,13 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -29,13 +31,12 @@ public class BlockDrum extends BlockContainer { final int capacity; - public BlockDrum(int capacity) { + public BlockDrum(int capacity, String blockname) { super(Material.iron); this.capacity = capacity; - setBlockName("drum"); + setBlockName(blockname); this.setHardness(3.0F); this.setResistance(5.0F); - setBlockTextureName("utilitiesinexcess:drum"); this.setHarvestLevel("pickaxe", 1); } 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..0b992928 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -11,7 +11,11 @@ public class TileEntityDrum extends TileEntity implements IFluidHandler { - public final FluidTank tank; + public FluidTank tank; + + public TileEntityDrum() { + super(); + } public TileEntityDrum(int capacity) { super(); @@ -19,7 +23,7 @@ public TileEntityDrum(int capacity) { } public void setTank(FluidTank tank) { - setFluid(tank.getFluid()); + this.tank = tank; } public void setFluid(FluidStack stack) { diff --git a/src/main/resources/assets/utilitiesinexcess/blockstates/bedrockium_drum.json b/src/main/resources/assets/utilitiesinexcess/blockstates/bedrockium_drum.json new file mode 100644 index 00000000..1ebad528 --- /dev/null +++ b/src/main/resources/assets/utilitiesinexcess/blockstates/bedrockium_drum.json @@ -0,0 +1,5 @@ +{ + "variants": { + "meta=0": { "model": "utilitiesinexcess:blocks/bedrockium_drum"} + } +} diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/bedrockium_drum.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/bedrockium_drum.json new file mode 100644 index 00000000..b0ba59e0 --- /dev/null +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/bedrockium_drum.json @@ -0,0 +1,7 @@ +{ + "parent": "utilitiesinexcess:blocks/drum", + "textures": { + "0": "utilitiesinexcess:models/bedrockium_drum", + "particle": "utilitiesinexcess:models/bedrockium_drum" + } +} diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/diamond_spike.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/diamond_spike.json index 389884a7..ced984c4 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/diamond_spike.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/diamond_spike.json @@ -1,6 +1,7 @@ { "parent": "utilitiesinexcess:blocks/wood_spike", "textures": { - "0": "utilitiesinexcess:models/diamond_spike" + "0": "utilitiesinexcess:models/diamond_spike", + "particle": "utilitiesinexcess:models/diamond_spike" } } diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/drum.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/drum.json index a406d5a9..d8ce6123 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/drum.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/drum.json @@ -3,7 +3,8 @@ "credit": "Made with Blockbench", "texture_size": [64, 64], "textures": { - "1": "utilitiesinexcess:models/drum" + "0": "utilitiesinexcess:models/drum", + "particle": "utilitiesinexcess:models/drum" }, "elements": [ { @@ -12,12 +13,12 @@ "to": [3, 16, 14], "rotation": {"angle": 0, "axis": "y", "origin": [2, 14, 3]}, "faces": { - "north": {"uv": [4, 9, 4.25, 9.5], "texture": "#1"}, - "east": {"uv": [7.5, 2.5, 10.25, 3], "texture": "#1"}, - "south": {"uv": [4.25, 9, 4.5, 9.5], "texture": "#1"}, - "west": {"uv": [7.5, 3, 10.25, 3.5], "texture": "#1"}, - "up": {"uv": [5.75, 11.25, 5.5, 8.5], "texture": "#1"}, - "down": {"uv": [6, 8.5, 5.75, 11.25], "texture": "#1"} + "north": {"uv": [4, 9, 4.25, 9.5], "texture": "#0"}, + "east": {"uv": [7.5, 2.5, 10.25, 3], "texture": "#0"}, + "south": {"uv": [4.25, 9, 4.5, 9.5], "texture": "#0"}, + "west": {"uv": [7.5, 3, 10.25, 3.5], "texture": "#0"}, + "up": {"uv": [5.75, 11.25, 5.5, 8.5], "texture": "#0"}, + "down": {"uv": [6, 8.5, 5.75, 11.25], "texture": "#0"} } }, { @@ -26,12 +27,12 @@ "to": [13, 16, 3], "rotation": {"angle": 0, "axis": "y", "origin": [2, 14, 2]}, "faces": { - "north": {"uv": [7.5, 3.5, 10.25, 4], "texture": "#1"}, - "east": {"uv": [4.5, 9, 4.75, 9.5], "texture": "#1"}, - "south": {"uv": [7.5, 4, 10.25, 4.5], "texture": "#1"}, - "west": {"uv": [4.75, 9, 5, 9.5], "texture": "#1"}, - "up": {"uv": [8.75, 8.75, 6, 8.5], "texture": "#1"}, - "down": {"uv": [8.75, 8.75, 6, 9], "texture": "#1"} + "north": {"uv": [7.5, 3.5, 10.25, 4], "texture": "#0"}, + "east": {"uv": [4.5, 9, 4.75, 9.5], "texture": "#0"}, + "south": {"uv": [7.5, 4, 10.25, 4.5], "texture": "#0"}, + "west": {"uv": [4.75, 9, 5, 9.5], "texture": "#0"}, + "up": {"uv": [8.75, 8.75, 6, 8.5], "texture": "#0"}, + "down": {"uv": [8.75, 8.75, 6, 9], "texture": "#0"} } }, { @@ -40,12 +41,12 @@ "to": [13, 15, 13], "rotation": {"angle": 0, "axis": "y", "origin": [2, 14, 2]}, "faces": { - "north": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, - "east": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, - "south": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, - "west": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, - "up": {"uv": [7.5, 2.5, 5, 0], "texture": "#1"}, - "down": {"uv": [7.5, 2.5, 5, 5], "texture": "#1"} + "north": {"uv": [0, 0, 2.5, 0], "texture": "#0"}, + "east": {"uv": [0, 0, 2.5, 0], "texture": "#0"}, + "south": {"uv": [0, 0, 2.5, 0], "texture": "#0"}, + "west": {"uv": [0, 0, 2.5, 0], "texture": "#0"}, + "up": {"uv": [7.5, 2.5, 5, 0], "texture": "#0"}, + "down": {"uv": [7.5, 2.5, 5, 5], "texture": "#0"} } }, { @@ -54,12 +55,12 @@ "to": [14, 16, 13], "rotation": {"angle": 0, "axis": "y", "origin": [2, 14, 2]}, "faces": { - "north": {"uv": [5, 9, 5.25, 9.5], "texture": "#1"}, - "east": {"uv": [7.5, 4.5, 10.25, 5], "texture": "#1"}, - "south": {"uv": [5.25, 9, 5.5, 9.5], "texture": "#1"}, - "west": {"uv": [5, 7.5, 7.75, 8], "texture": "#1"}, - "up": {"uv": [9, 11.25, 8.75, 8.5], "texture": "#1"}, - "down": {"uv": [0.25, 9, 0, 11.75], "texture": "#1"} + "north": {"uv": [5, 9, 5.25, 9.5], "texture": "#0"}, + "east": {"uv": [7.5, 4.5, 10.25, 5], "texture": "#0"}, + "south": {"uv": [5.25, 9, 5.5, 9.5], "texture": "#0"}, + "west": {"uv": [5, 7.5, 7.75, 8], "texture": "#0"}, + "up": {"uv": [9, 11.25, 8.75, 8.5], "texture": "#0"}, + "down": {"uv": [0.25, 9, 0, 11.75], "texture": "#0"} } }, { @@ -68,12 +69,12 @@ "to": [14, 16, 14], "rotation": {"angle": 0, "axis": "y", "origin": [2, 14, 2]}, "faces": { - "north": {"uv": [7.5, 5, 10.25, 5.5], "texture": "#1"}, - "east": {"uv": [6, 9.25, 6.25, 9.75], "texture": "#1"}, - "south": {"uv": [7.5, 5.5, 10.25, 6], "texture": "#1"}, - "west": {"uv": [6.25, 9.25, 6.5, 9.75], "texture": "#1"}, - "up": {"uv": [3, 9.25, 0.25, 9], "texture": "#1"}, - "down": {"uv": [8.75, 9, 6, 9.25], "texture": "#1"} + "north": {"uv": [7.5, 5, 10.25, 5.5], "texture": "#0"}, + "east": {"uv": [6, 9.25, 6.25, 9.75], "texture": "#0"}, + "south": {"uv": [7.5, 5.5, 10.25, 6], "texture": "#0"}, + "west": {"uv": [6.25, 9.25, 6.5, 9.75], "texture": "#0"}, + "up": {"uv": [3, 9.25, 0.25, 9], "texture": "#0"}, + "down": {"uv": [8.75, 9, 6, 9.25], "texture": "#0"} } }, { @@ -82,12 +83,12 @@ "to": [13, 14, 13], "rotation": {"angle": 0, "axis": "y", "origin": [4, 2, 3]}, "faces": { - "north": {"uv": [0, 0, 2.5, 3], "texture": "#1"}, - "east": {"uv": [2.5, 0, 5, 3], "texture": "#1"}, - "south": {"uv": [0, 3, 2.5, 6], "texture": "#1"}, - "west": {"uv": [2.5, 3, 5, 6], "texture": "#1"}, - "up": {"uv": [7.5, 7.5, 5, 5], "texture": "#1"}, - "down": {"uv": [2.5, 6, 0, 8.5], "texture": "#1"} + "north": {"uv": [0, 0, 2.5, 3], "texture": "#0"}, + "east": {"uv": [2.5, 0, 5, 3], "texture": "#0"}, + "south": {"uv": [0, 3, 2.5, 6], "texture": "#0"}, + "west": {"uv": [2.5, 3, 5, 6], "texture": "#0"}, + "up": {"uv": [7.5, 7.5, 5, 5], "texture": "#0"}, + "down": {"uv": [2.5, 6, 0, 8.5], "texture": "#0"} } }, { @@ -96,12 +97,12 @@ "to": [3, 2, 14], "rotation": {"angle": 0, "axis": "y", "origin": [2, 0, 3]}, "faces": { - "north": {"uv": [6.5, 9.25, 6.75, 9.75], "texture": "#1"}, - "east": {"uv": [7.5, 6, 10.25, 6.5], "texture": "#1"}, - "south": {"uv": [6.75, 9.25, 7, 9.75], "texture": "#1"}, - "west": {"uv": [7.5, 6.5, 10.25, 7], "texture": "#1"}, - "up": {"uv": [3.25, 11.75, 3, 9], "texture": "#1"}, - "down": {"uv": [3.5, 9, 3.25, 11.75], "texture": "#1"} + "north": {"uv": [6.5, 9.25, 6.75, 9.75], "texture": "#0"}, + "east": {"uv": [7.5, 6, 10.25, 6.5], "texture": "#0"}, + "south": {"uv": [6.75, 9.25, 7, 9.75], "texture": "#0"}, + "west": {"uv": [7.5, 6.5, 10.25, 7], "texture": "#0"}, + "up": {"uv": [3.25, 11.75, 3, 9], "texture": "#0"}, + "down": {"uv": [3.5, 9, 3.25, 11.75], "texture": "#0"} } }, { @@ -110,12 +111,12 @@ "to": [13, 2, 3], "rotation": {"angle": 0, "axis": "y", "origin": [2, 0, 2]}, "faces": { - "north": {"uv": [7.5, 7, 10.25, 7.5], "texture": "#1"}, - "east": {"uv": [7, 9.25, 7.25, 9.75], "texture": "#1"}, - "south": {"uv": [7.75, 7.5, 10.5, 8], "texture": "#1"}, - "west": {"uv": [7.25, 9.25, 7.5, 9.75], "texture": "#1"}, - "up": {"uv": [11.75, 8.75, 9, 8.5], "texture": "#1"}, - "down": {"uv": [11.75, 8.75, 9, 9], "texture": "#1"} + "north": {"uv": [7.5, 7, 10.25, 7.5], "texture": "#0"}, + "east": {"uv": [7, 9.25, 7.25, 9.75], "texture": "#0"}, + "south": {"uv": [7.75, 7.5, 10.5, 8], "texture": "#0"}, + "west": {"uv": [7.25, 9.25, 7.5, 9.75], "texture": "#0"}, + "up": {"uv": [11.75, 8.75, 9, 8.5], "texture": "#0"}, + "down": {"uv": [11.75, 8.75, 9, 9], "texture": "#0"} } }, { @@ -124,12 +125,12 @@ "to": [13, 1, 13], "rotation": {"angle": 0, "axis": "y", "origin": [2, 1, 2]}, "faces": { - "north": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, - "east": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, - "south": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, - "west": {"uv": [0, 0, 2.5, 0], "texture": "#1"}, - "up": {"uv": [5, 8.5, 2.5, 6], "texture": "#1"}, - "down": {"uv": [10, 0, 7.5, 2.5], "texture": "#1"} + "north": {"uv": [0, 0, 2.5, 0], "texture": "#0"}, + "east": {"uv": [0, 0, 2.5, 0], "texture": "#0"}, + "south": {"uv": [0, 0, 2.5, 0], "texture": "#0"}, + "west": {"uv": [0, 0, 2.5, 0], "texture": "#0"}, + "up": {"uv": [5, 8.5, 2.5, 6], "texture": "#0"}, + "down": {"uv": [10, 0, 7.5, 2.5], "texture": "#0"} } }, { @@ -138,12 +139,12 @@ "to": [14, 2, 13], "rotation": {"angle": 0, "axis": "y", "origin": [2, 0, 2]}, "faces": { - "north": {"uv": [7.5, 9.25, 7.75, 9.75], "texture": "#1"}, - "east": {"uv": [5, 8, 7.75, 8.5], "texture": "#1"}, - "south": {"uv": [7.75, 9.25, 8, 9.75], "texture": "#1"}, - "west": {"uv": [7.75, 8, 10.5, 8.5], "texture": "#1"}, - "up": {"uv": [3.75, 11.75, 3.5, 9], "texture": "#1"}, - "down": {"uv": [4, 9, 3.75, 11.75], "texture": "#1"} + "north": {"uv": [7.5, 9.25, 7.75, 9.75], "texture": "#0"}, + "east": {"uv": [5, 8, 7.75, 8.5], "texture": "#0"}, + "south": {"uv": [7.75, 9.25, 8, 9.75], "texture": "#0"}, + "west": {"uv": [7.75, 8, 10.5, 8.5], "texture": "#0"}, + "up": {"uv": [3.75, 11.75, 3.5, 9], "texture": "#0"}, + "down": {"uv": [4, 9, 3.75, 11.75], "texture": "#0"} } }, { @@ -152,12 +153,12 @@ "to": [14, 2, 14], "rotation": {"angle": 0, "axis": "y", "origin": [2, 0, 2]}, "faces": { - "north": {"uv": [0, 8.5, 2.75, 9], "texture": "#1"}, - "east": {"uv": [8, 9.25, 8.25, 9.75], "texture": "#1"}, - "south": {"uv": [2.75, 8.5, 5.5, 9], "texture": "#1"}, - "west": {"uv": [8.25, 9.25, 8.5, 9.75], "texture": "#1"}, - "up": {"uv": [11.75, 9.25, 9, 9], "texture": "#1"}, - "down": {"uv": [3, 9.25, 0.25, 9.5], "texture": "#1"} + "north": {"uv": [0, 8.5, 2.75, 9], "texture": "#0"}, + "east": {"uv": [8, 9.25, 8.25, 9.75], "texture": "#0"}, + "south": {"uv": [2.75, 8.5, 5.5, 9], "texture": "#0"}, + "west": {"uv": [8.25, 9.25, 8.5, 9.75], "texture": "#0"}, + "up": {"uv": [11.75, 9.25, 9, 9], "texture": "#0"}, + "down": {"uv": [3, 9.25, 0.25, 9.5], "texture": "#0"} } } ], diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/giga_torch.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/giga_torch.json index 653c21d9..5f315704 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/giga_torch.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/giga_torch.json @@ -2,7 +2,8 @@ "format_version": "1.21.11", "credit": "Made with Blockbench", "textures": { - "0": "utilitiesinexcess:models/giga_torch" + "0": "utilitiesinexcess:models/giga_torch", + "particle": "utilitiesinexcess:models/giga_torch" }, "elements": [ { diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/gold_spike.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/gold_spike.json index 378b19f6..a67ee360 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/gold_spike.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/gold_spike.json @@ -1,6 +1,7 @@ { "parent": "utilitiesinexcess:blocks/wood_spike", "textures": { - "0": "utilitiesinexcess:models/gold_spike" + "0": "utilitiesinexcess:models/gold_spike", + "particle": "utilitiesinexcess:models/gold_spike" } } diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/iron_spike.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/iron_spike.json index 17173d72..51c8ebcb 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/iron_spike.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/iron_spike.json @@ -1,6 +1,7 @@ { "parent": "utilitiesinexcess:blocks/wood_spike", "textures": { - "0": "utilitiesinexcess:models/iron_spike" + "0": "utilitiesinexcess:models/iron_spike", + "particle": "utilitiesinexcess:models/iron_spike" } } diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_energy.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_energy.json index 88c51989..087c6fd3 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_energy.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_energy.json @@ -1,6 +1,7 @@ { "parent": "utilitiesinexcess:blocks/trash_can_item", "textures": { - "0": "utilitiesinexcess:models/trash_can_energy" + "0": "utilitiesinexcess:models/trash_can_energy", + "particle": "utilitiesinexcess:models/trash_can_energy" } } diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_fluid.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_fluid.json index 1ca47774..89473339 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_fluid.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_fluid.json @@ -1,6 +1,7 @@ { "parent": "utilitiesinexcess:blocks/trash_can_item", "textures": { - "0": "utilitiesinexcess:models/trash_can_fluid" + "0": "utilitiesinexcess:models/trash_can_fluid", + "particle": "utilitiesinexcess:models/trash_can_fluid" } } diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_item.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_item.json index c1b6e039..6df4a0de 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_item.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/trash_can_item.json @@ -3,7 +3,8 @@ "credit": "Made with Blockbench", "texture_size": [64, 64], "textures": { - "0": "utilitiesinexcess:models/trash_can_item" + "0": "utilitiesinexcess:models/trash_can_item", + "particle": "utilitiesinexcess:models/trash_can_item" }, "elements": [ { diff --git a/src/main/resources/assets/utilitiesinexcess/models/blocks/wood_spike.json b/src/main/resources/assets/utilitiesinexcess/models/blocks/wood_spike.json index a865a138..8779e2ab 100644 --- a/src/main/resources/assets/utilitiesinexcess/models/blocks/wood_spike.json +++ b/src/main/resources/assets/utilitiesinexcess/models/blocks/wood_spike.json @@ -3,7 +3,8 @@ "credit": "Made with Blockbench", "texture_size": [64, 64], "textures": { - "0": "utilitiesinexcess:models/wood_spike" + "0": "utilitiesinexcess:models/wood_spike", + "particle": "utilitiesinexcess:models/wood_spike" }, "elements": [ { From 96520524eb1cc9e0e13b402ea97bce298676602f Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 14:57:49 -0400 Subject: [PATCH 02/13] Update GTNHLib to fix particles --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 2ecc53e0..4db77766 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.9.40:dev") + implementation("com.github.GTNewHorizons:GTNHLib:0.11.11:dev") // TODO: remove MUI1 dep when the implicit dependency // TODO: in IItemHandlerModifiable is removed api("com.github.GTNewHorizons:ModularUI:1.3.1:dev") From cd4396801623f2c8d981e7e1fa351eba288ae4b9 Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 15:21:20 -0400 Subject: [PATCH 03/13] Better lang --- .../common/blocks/BlockDrum.java | 17 ++++++++--------- .../assets/utilitiesinexcess/lang/en_US.lang | 5 +++-- 2 files changed, 11 insertions(+), 11 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 6984c7ae..393d61e4 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -261,16 +261,15 @@ public static FluidStack getFluidFromStack(ItemStack stack) { @Override public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean bool) { - tooltip - .add(StatCollector.translateToLocalFormatted("tile.drum.desc", NumberFormat.DEFAULT.format(capacity))); + FluidStack fluid = getFluid(stack); - if (fluid != null) { - String formatted = StatCollector.translateToLocalFormatted( - "tile.drum.desc.fluid", - fluid.getLocalizedName(), - NumberFormat.DEFAULT.format(fluid.amount)); - tooltip.add(formatted); - } + String fluidName = + fluid == null ? StatCollector.translateToLocalFormatted("tile.drum.desc.empty") + : fluid.getLocalizedName(); + + tooltip.add(StatCollector.translateToLocalFormatted("tile.drum.desc", fluidName, + fluid == null ? 0 : NumberFormat.DEFAULT.format(fluid.amount), + NumberFormat.DEFAULT.format(capacity))); } } diff --git a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang index 734dbcdb..589d4b16 100644 --- a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang +++ b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang @@ -407,8 +407,9 @@ nei.infopage.uie.advanced.block_update_detector.1=Like the standard Block Update chat.tile.advanced_block_update_detector.toggle=Side %s set to redstone output %s. tile.drum.name=Drum -tile.drum.desc=Holds %s buckets of fluid -tile.drum.desc.fluid=Currently holding %s %sL +tile.bedrockium_drum.name=Bedrockium Drum +tile.drum.desc.empty=Empty +tile.drum.desc=%s: %s / %s tile.drum.chat.filled=In drum: %s %sL tile.drum.chat.empty=Drum is empty From fab00431e0a86b7ab583be85245cdf2394eb3a79 Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 15:22:50 -0400 Subject: [PATCH 04/13] Allow stacking --- .../utilitiesinexcess/common/blocks/BlockDrum.java | 1 - 1 file changed, 1 deletion(-) 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 393d61e4..93681028 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -162,7 +162,6 @@ public static class ItemBlockDrum extends ItemBlock implements IFluidContainerIt public ItemBlockDrum(Block block) { super(block); - this.setMaxStackSize(1); this.capacity = ((BlockDrum) block).capacity; } From f687bb40ab52039add27c57d7d31c22f40db0fff Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 15:38:07 -0400 Subject: [PATCH 05/13] Unneeded call (already in super) --- .../utilitiesinexcess/common/blocks/BlockDrum.java | 1 - 1 file changed, 1 deletion(-) 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 93681028..44071ddd 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -137,7 +137,6 @@ public void breakBlock(World world, int x, int y, int z, Block block, int meta) EntityItem entityItem = new EntityItem(world, x + dx, y + dy, z + dz, drop); world.spawnEntityInWorld(entityItem); - world.removeTileEntity(x, y, z); super.breakBlock(world, x, y, z, block, meta); } From e01559ed4f65d7e7e1af6615786983e9adca2afd Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 15:40:21 -0400 Subject: [PATCH 06/13] Correctly report canFill --- .../utilitiesinexcess/common/tileentities/TileEntityDrum.java | 3 ++- 1 file changed, 2 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 0b992928..ac0b8c99 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -74,7 +74,8 @@ public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) { @Override public boolean canFill(ForgeDirection from, Fluid fluid) { - return true; + FluidStack current = tank.getFluid(); + return current == null || current.getFluid() == fluid; } @Override From e7f76f9cd05016aa98fc62c966a74d3c339cc17e Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 15:40:28 -0400 Subject: [PATCH 07/13] Fix duplicate container drain --- .../utilitiesinexcess/common/blocks/BlockDrum.java | 1 - 1 file changed, 1 deletion(-) 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 44071ddd..e66b39dd 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -68,7 +68,6 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p } if (drum.fill(ForgeDirection.UP, heldFluid, true) == heldFluid.amount) { - FluidContainerRegistry.drainFluidContainer(heldItem); ItemStack emptyContainer = FluidContainerRegistry.drainFluidContainer(heldItem); emptyContainer.stackSize = 1; heldItem.stackSize--; From 05dcd365356183c8dd46320cac5dfac4c3d2add4 Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 15:45:00 -0400 Subject: [PATCH 08/13] No need for this manual tank manipulation --- .../utilitiesinexcess/common/blocks/BlockDrum.java | 4 ---- 1 file changed, 4 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 e66b39dd..7c3a45c4 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -63,10 +63,6 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if (FluidContainerRegistry.isFilledContainer(heldItem)) { - if (drum.tank.getFluid() == null) { - drum.setFluid(new FluidStack(heldFluid.getFluid(), 0)); - } - if (drum.fill(ForgeDirection.UP, heldFluid, true) == heldFluid.amount) { ItemStack emptyContainer = FluidContainerRegistry.drainFluidContainer(heldItem); emptyContainer.stackSize = 1; From 68c88d62049a735ddf9aeec643bc1eaea7e443bb Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 16:05:51 -0400 Subject: [PATCH 09/13] Fix capacity saving --- .../common/tileentities/TileEntityDrum.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 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 ac0b8c99..aefa19d8 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,7 @@ public class TileEntityDrum extends TileEntity implements IFluidHandler { public FluidTank tank; + private int capacity; public TileEntityDrum() { super(); @@ -19,6 +20,7 @@ public TileEntityDrum() { public TileEntityDrum(int capacity) { super(); + this.capacity = capacity; this.tank = new FluidTank(capacity); } @@ -33,15 +35,17 @@ public void setFluid(FluidStack stack) { @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); + this.capacity = nbt.getInteger("capacity"); + this.tank = new FluidTank(capacity); if (nbt.hasKey("tank")) { - NBTTagCompound tankNbt = nbt.getCompoundTag("tank"); - tank.readFromNBT(tankNbt); + tank.readFromNBT(nbt.getCompoundTag("tank")); } } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); + nbt.setInteger("capacity", capacity); NBTTagCompound tankNbt = new NBTTagCompound(); tank.writeToNBT(tankNbt); nbt.setTag("tank", tankNbt); From ff73758032a9d285e98dbc7701f510545d3293e9 Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 17:15:41 -0400 Subject: [PATCH 10/13] Whatever, just rewrite it --- .../common/blocks/BlockDrum.java | 219 ++++++++++++------ .../common/tileentities/TileEntityDrum.java | 14 +- .../assets/utilitiesinexcess/lang/en_US.lang | 2 - 3 files changed, 153 insertions(+), 82 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 7c3a45c4..882ef9bb 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -9,13 +9,12 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -57,41 +56,130 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return true; } 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; + } - if (FluidContainerRegistry.isFilledContainer(heldItem)) { + ItemStack heldItem = player.getCurrentEquippedItem(); - if (drum.fill(ForgeDirection.UP, heldFluid, true) == heldFluid.amount) { - ItemStack emptyContainer = FluidContainerRegistry.drainFluidContainer(heldItem); - emptyContainer.stackSize = 1; - heldItem.stackSize--; - 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); - - if (drainedFluid.amount == 1000) { - ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(drainedFluid, heldItem); - player.inventory.setInventorySlotContents(player.inventory.currentItem, filledContainer); - } - } + if (heldItem != null) { + // weird modded containers like universal cells + if (heldItem.getItem() instanceof IFluidContainerItem) { + return handleIFluidContainerItem(drum, player, heldItem); + } + // fixed size containers + if (FluidContainerRegistry.isFilledContainer(heldItem)) { + return handleFilledRegistryContainer(drum, player, heldItem); + } + // empty containers + if (FluidContainerRegistry.isEmptyContainer(heldItem)) { + return handleEmptyRegistryContainer(drum, player, heldItem); } } + FluidStack fluid = drum.tank.getFluid(); + player.addChatMessage( + new ChatComponentTranslation( + "tile.drum.desc", + fluid == null ? StatCollector.translateToLocalFormatted("tile.drum.desc.empty") + : fluid.getLocalizedName(), + fluid == null ? 0 : NumberFormat.DEFAULT.format(fluid.amount), + NumberFormat.DEFAULT.format(capacity))); + + return false; + } + + private boolean handleIFluidContainerItem(TileEntityDrum drum, EntityPlayer player, ItemStack heldItem) { + IFluidContainerItem container = (IFluidContainerItem) heldItem.getItem(); + if (container == null) return false; + FluidStack containerFluid = container.getFluid(heldItem); + + if (containerFluid != null && containerFluid.amount > 0) { + int accepted = drum.fill(ForgeDirection.UP, containerFluid, false); + if (accepted <= 0) return false; + + FluidStack toTransfer = containerFluid.copy(); + toTransfer.amount = accepted; + + FluidStack drained = container.drain(heldItem, accepted, false); + if (drained == null || drained.amount != accepted) return false; + + container.drain(heldItem, accepted, true); + drum.fill(ForgeDirection.UP, toTransfer, true); + + } else { + FluidStack inTank = drum.tank.getFluid(); + if (inTank == null || inTank.amount <= 0) return false; + + FluidStack simDrain = drum.drain(ForgeDirection.UP, container.getCapacity(heldItem), false); + if (simDrain == null || simDrain.amount <= 0) return false; + + int accepted = container.fill(heldItem, simDrain, false); + if (accepted <= 0) return false; + + FluidStack toTransfer = simDrain.copy(); + toTransfer.amount = accepted; + + drum.drain(ForgeDirection.UP, accepted, true); + container.fill(heldItem, toTransfer, true); + + } + return true; + } + + private boolean handleFilledRegistryContainer(TileEntityDrum drum, EntityPlayer player, ItemStack heldItem) { + FluidStack containerFluid = FluidContainerRegistry.getFluidForFilledItem(heldItem); + if (containerFluid == null) return false; + + int accepted = drum.fill(ForgeDirection.UP, containerFluid, false); + if (accepted < containerFluid.amount) return false; + + ItemStack emptyContainer = FluidContainerRegistry.drainFluidContainer(heldItem); + if (emptyContainer == null) return false; + + drum.fill(ForgeDirection.UP, containerFluid, true); + + giveResultStack(player, heldItem, emptyContainer); + + return true; + } + + private boolean handleEmptyRegistryContainer(TileEntityDrum drum, EntityPlayer player, ItemStack heldItem) { + FluidStack inTank = drum.tank.getFluid(); + if (inTank == null || inTank.amount <= 0) return false; + + FluidStack simDrain = drum.drain(ForgeDirection.UP, FluidContainerRegistry.BUCKET_VOLUME, false); + if (simDrain == null || simDrain.amount <= 0) return false; + + ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(simDrain, heldItem); + if (filledContainer == null) return false; + + drum.drain(ForgeDirection.UP, simDrain.amount, true); + + giveResultStack(player, heldItem, filledContainer); + return true; } + private void giveResultStack(EntityPlayer player, ItemStack sourceStack, ItemStack result) { + int heldSlot = player.inventory.currentItem; + + if (sourceStack.stackSize == 1) { + player.inventory.setInventorySlotContents(heldSlot, result); + } else { + player.inventory.decrStackSize(heldSlot, 1); + if (!player.inventory.addItemStackToInventory(result)) { + player.worldObj + .spawnEntityInWorld(new EntityItem(player.worldObj, player.posX, player.posY, player.posZ, result)); + } + } + // fix desyncs + if (player instanceof EntityPlayerMP playerMP) { + playerMP.mcServer.getConfigurationManager() + .syncPlayerInventory(playerMP); + } + } + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase placer, ItemStack stack) { super.onBlockPlacedBy(world, x, y, z, placer, stack); @@ -104,22 +192,18 @@ public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase p @Override public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { - // We spawn the correct stack on breakBlock(), make it not drop normally. return new ArrayList<>(); } @Override public void breakBlock(World world, int x, int y, int z, Block block, int meta) { - ItemStack drop = new ItemStack(this, 1, meta); TileEntity tile = world.getTileEntity(x, y, z); if (tile instanceof TileEntityDrum drum) { - if (drum.tank.getFluid() != null) { - ItemBlockDrum.setFluid( - drop, - drum.tank.getFluid() - .copy()); + FluidStack fluid = drum.tank.getFluid(); + if (fluid != null) { + ItemBlockDrum.setFluid(drop, fluid.copy()); } else { ItemBlockDrum.clearFluid(drop); } @@ -132,6 +216,7 @@ public void breakBlock(World world, int x, int y, int z, Block block, int meta) EntityItem entityItem = new EntityItem(world, x + dx, y + dy, z + dz, drop); world.spawnEntityInWorld(entityItem); + super.breakBlock(world, x, y, z, block, meta); } @@ -171,9 +256,7 @@ public int getCapacity(ItemStack stack) { @Override public int fill(ItemStack stack, FluidStack resource, boolean doFill) { - if (resource == null) { - return 0; - } + if (resource == null || resource.amount <= 0) return 0; FluidStack currentFluid = getFluid(stack); @@ -185,40 +268,36 @@ public int fill(ItemStack stack, FluidStack resource, boolean doFill) { setFluid(stack, newFluid); } return fillAmount; - } else { - if (!currentFluid.isFluidEqual(resource)) { - return 0; - } + } - int space = capacity - currentFluid.amount; - if (space <= 0) { - return 0; - } + if (!currentFluid.isFluidEqual(resource)) return 0; - int fillAmount = Math.min(space, resource.amount); - if (doFill && fillAmount > 0) { - currentFluid.amount += fillAmount; - setFluid(stack, currentFluid); - } - return fillAmount; + int space = capacity - currentFluid.amount; + if (space <= 0) return 0; + + int fillAmount = Math.min(space, resource.amount); + if (doFill && fillAmount > 0) { + currentFluid.amount += fillAmount; + setFluid(stack, currentFluid); } + return fillAmount; } @Override public FluidStack drain(ItemStack stack, int maxDrain, boolean doDrain) { FluidStack currentFluid = getFluid(stack); - if (currentFluid == null) { - return null; - } + if (currentFluid == null || currentFluid.amount <= 0) return null; int drained = Math.min(maxDrain, currentFluid.amount); + if (drained <= 0) return null; + FluidStack drainedFluid = currentFluid.copy(); drainedFluid.amount = drained; if (doDrain) { currentFluid.amount -= drained; if (currentFluid.amount <= 0) { - stack.setTagCompound(null); + clearFluid(stack); } else { setFluid(stack, currentFluid); } @@ -226,12 +305,9 @@ public FluidStack drain(ItemStack stack, int maxDrain, boolean doDrain) { return drainedFluid; } - // Helper functions to abstract away the NBT layer public static void setFluid(ItemStack stack, FluidStack fluid) { NBTTagCompound tag = stack.getTagCompound(); - if (tag == null) { - tag = new NBTTagCompound(); - } + if (tag == null) tag = new NBTTagCompound(); NBTTagCompound fluidTag = new NBTTagCompound(); fluid.writeToNBT(fluidTag); tag.setTag("Fluid", fluidTag); @@ -245,25 +321,24 @@ public static void clearFluid(ItemStack stack) { public static FluidStack getFluidFromStack(ItemStack stack) { if (stack.hasTagCompound() && stack.getTagCompound() .hasKey("Fluid")) { - NBTTagCompound fluidTag = stack.getTagCompound() - .getCompoundTag("Fluid"); - return FluidStack.loadFluidStackFromNBT(fluidTag); + return FluidStack.loadFluidStackFromNBT( + stack.getTagCompound() + .getCompoundTag("Fluid")); } return null; } @Override public void addInformation(ItemStack stack, EntityPlayer player, List tooltip, boolean bool) { - FluidStack fluid = getFluid(stack); - String fluidName = - fluid == null ? StatCollector.translateToLocalFormatted("tile.drum.desc.empty") + String fluidName = fluid == null ? StatCollector.translateToLocalFormatted("tile.drum.desc.empty") : fluid.getLocalizedName(); - - tooltip.add(StatCollector.translateToLocalFormatted("tile.drum.desc", fluidName, - fluid == null ? 0 : NumberFormat.DEFAULT.format(fluid.amount), - NumberFormat.DEFAULT.format(capacity))); + tooltip.add( + StatCollector.translateToLocalFormatted( + "tile.drum.desc", + fluidName, + fluid == null ? 0 : NumberFormat.DEFAULT.format(fluid.amount), + NumberFormat.DEFAULT.format(capacity))); } } - } 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 aefa19d8..207538fa 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/tileentities/TileEntityDrum.java @@ -24,10 +24,6 @@ public TileEntityDrum(int capacity) { this.tank = new FluidTank(capacity); } - public void setTank(FluidTank tank) { - this.tank = tank; - } - public void setFluid(FluidStack stack) { this.tank.setFluid(stack); } @@ -51,7 +47,7 @@ public void writeToNBT(NBTTagCompound nbt) { nbt.setTag("tank", tankNbt); } - // IFluidHandler implementation + // IFluidHandler @Override public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { @@ -63,7 +59,9 @@ public int fill(ForgeDirection from, FluidStack resource, boolean doFill) { @Override public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { - if (resource == null || !resource.isFluidEqual(tank.getFluid())) return null; + if (resource == null) return null; + FluidStack inTank = tank.getFluid(); + if (inTank == null || !resource.isFluidEqual(inTank)) return null; FluidStack drained = tank.drain(resource.amount, doDrain); if (doDrain && drained != null && drained.amount > 0) markDirty(); return drained; @@ -84,8 +82,8 @@ public boolean canFill(ForgeDirection from, Fluid fluid) { @Override public boolean canDrain(ForgeDirection from, Fluid fluid) { - FluidStack fluidInTank = tank.getFluid(); - return fluidInTank != null && fluidInTank.getFluid() == fluid; + FluidStack current = tank.getFluid(); + return current != null && current.getFluid() == fluid; } @Override diff --git a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang index 589d4b16..ab438d3b 100644 --- a/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang +++ b/src/main/resources/assets/utilitiesinexcess/lang/en_US.lang @@ -410,8 +410,6 @@ tile.drum.name=Drum tile.bedrockium_drum.name=Bedrockium Drum tile.drum.desc.empty=Empty tile.drum.desc=%s: %s / %s -tile.drum.chat.filled=In drum: %s %sL -tile.drum.chat.empty=Drum is empty nei.infopage.uie.drum.1=Drums are simple fluid tanks that keep their contents when broken. From fbb7d51120c3ff1f53a396fff864816e65120e4f Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 17:16:46 -0400 Subject: [PATCH 11/13] Fix sizes to match exu --- .../java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java index ea9bf51c..a8bc8bd0 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/ModBlocks.java @@ -92,8 +92,8 @@ public enum ModBlocks { TRASH_CAN_ITEM(BlockConfig.enableTrashCanItem, new BlockTrashCanItem(), "trash_can_item"), TRASH_CAN_FLUID(BlockConfig.enableTrashCanFluid, new BlockTrashCanFluid(), "trash_can_fluid"), TRASH_CAN_ENERGY(BlockConfig.enableTrashCanEnergy, new BlockTrashCanEnergy(), "trash_can_energy"), - DRUM(BlockConfig.enableDrum, new BlockDrum(16000, "drum"), BlockDrum.ItemBlockDrum.class, "drum"), - BEDROCKIUM_DRUM(BlockConfig.enableDrum, new BlockDrum(64000, "bedrockium_drum"), BlockDrum.ItemBlockDrum.class, "bedrockium_drum"), + DRUM(BlockConfig.enableDrum, new BlockDrum(256_000, "drum"), BlockDrum.ItemBlockDrum.class, "drum"), + BEDROCKIUM_DRUM(BlockConfig.enableDrum, new BlockDrum(65_536_000, "bedrockium_drum"), BlockDrum.ItemBlockDrum.class, "bedrockium_drum"), SOUND_MUFFLER(BlockConfig.soundMuffler.enableSoundMuffler, new BlockSoundMuffler(), BlockSoundMuffler.ItemBlockSoundMuffler.class, "sound_muffler"), RAIN_MUFFLER(BlockConfig.rainMuffler.enableRainMuffler, new BlockRainMuffler(), BlockRainMuffler.ItemBlockRainMuffler.class, "rain_muffler"), MAGIC_WOOD(BlockConfig.enableMagicWood, new BlockMagicWood(), "magic_wood"), From 4d527d0808483b4d157cb9ccb1de75f366ec56e2 Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Mon, 8 Jun 2026 17:18:36 -0400 Subject: [PATCH 12/13] Recipe --- .../common/recipe/RecipeLoader.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/recipe/RecipeLoader.java b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/recipe/RecipeLoader.java index d3da592f..6031b9f2 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/recipe/RecipeLoader.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/recipe/RecipeLoader.java @@ -273,6 +273,19 @@ public static void run() { 'c', Items.cauldron); + // Bedrockium Drum + addShapedRecipe( + ModBlocks.BEDROCKIUM_DRUM, + "ipi", + "ici", + "ipi", + 'i', + ModItems.BEDROCKIUM_INGOT, + 'p', + Blocks.light_weighted_pressure_plate, + 'c', + Items.cauldron); + // Sound Muffler addShapedRecipe( ModBlocks.SOUND_MUFFLER, From 56b71ac0640fbbd83c8c1d151361df278069ca7f Mon Sep 17 00:00:00 2001 From: Mary Hopson Date: Sat, 13 Jun 2026 17:29:52 -0400 Subject: [PATCH 13/13] Address review --- .../common/blocks/BlockDrum.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 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 882ef9bb..3e1208a3 100644 --- a/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java +++ b/src/main/java/com/fouristhenumber/utilitiesinexcess/common/blocks/BlockDrum.java @@ -64,8 +64,8 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p if (heldItem != null) { // weird modded containers like universal cells - if (heldItem.getItem() instanceof IFluidContainerItem) { - return handleIFluidContainerItem(drum, player, heldItem); + if (heldItem.getItem() instanceof IFluidContainerItem item) { + return handleIFluidContainerItem(drum, item, heldItem); } // fixed size containers if (FluidContainerRegistry.isFilledContainer(heldItem)) { @@ -89,10 +89,9 @@ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer p return false; } - private boolean handleIFluidContainerItem(TileEntityDrum drum, EntityPlayer player, ItemStack heldItem) { - IFluidContainerItem container = (IFluidContainerItem) heldItem.getItem(); - if (container == null) return false; - FluidStack containerFluid = container.getFluid(heldItem); + private boolean handleIFluidContainerItem(TileEntityDrum drum, IFluidContainerItem heldItem, + ItemStack heldItemStack) { + FluidStack containerFluid = heldItem.getFluid(heldItemStack); if (containerFluid != null && containerFluid.amount > 0) { int accepted = drum.fill(ForgeDirection.UP, containerFluid, false); @@ -101,27 +100,27 @@ private boolean handleIFluidContainerItem(TileEntityDrum drum, EntityPlayer play FluidStack toTransfer = containerFluid.copy(); toTransfer.amount = accepted; - FluidStack drained = container.drain(heldItem, accepted, false); + FluidStack drained = heldItem.drain(heldItemStack, accepted, false); if (drained == null || drained.amount != accepted) return false; - container.drain(heldItem, accepted, true); + heldItem.drain(heldItemStack, accepted, true); drum.fill(ForgeDirection.UP, toTransfer, true); } else { FluidStack inTank = drum.tank.getFluid(); if (inTank == null || inTank.amount <= 0) return false; - FluidStack simDrain = drum.drain(ForgeDirection.UP, container.getCapacity(heldItem), false); + FluidStack simDrain = drum.drain(ForgeDirection.UP, heldItem.getCapacity(heldItemStack), false); if (simDrain == null || simDrain.amount <= 0) return false; - int accepted = container.fill(heldItem, simDrain, false); + int accepted = heldItem.fill(heldItemStack, simDrain, false); if (accepted <= 0) return false; FluidStack toTransfer = simDrain.copy(); toTransfer.amount = accepted; drum.drain(ForgeDirection.UP, accepted, true); - container.fill(heldItem, toTransfer, true); + heldItem.fill(heldItemStack, toTransfer, true); } return true; @@ -132,7 +131,7 @@ private boolean handleFilledRegistryContainer(TileEntityDrum drum, EntityPlayer if (containerFluid == null) return false; int accepted = drum.fill(ForgeDirection.UP, containerFluid, false); - if (accepted < containerFluid.amount) return false; + if (accepted != containerFluid.amount) return false; ItemStack emptyContainer = FluidContainerRegistry.drainFluidContainer(heldItem); if (emptyContainer == null) return false; @@ -148,8 +147,11 @@ private boolean handleEmptyRegistryContainer(TileEntityDrum drum, EntityPlayer p FluidStack inTank = drum.tank.getFluid(); if (inTank == null || inTank.amount <= 0) return false; - FluidStack simDrain = drum.drain(ForgeDirection.UP, FluidContainerRegistry.BUCKET_VOLUME, false); - if (simDrain == null || simDrain.amount <= 0) return false; + int containerCapacity = FluidContainerRegistry.getContainerCapacity(inTank, heldItem); + if (containerCapacity <= 0) return false; + + FluidStack simDrain = drum.drain(ForgeDirection.UP, containerCapacity, false); + if (simDrain == null || simDrain.amount < containerCapacity) return false; ItemStack filledContainer = FluidContainerRegistry.fillFluidContainer(simDrain, heldItem); if (filledContainer == null) return false;