From 81b6df6962135604ea8be15d872745a0b560f900 Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 6 Oct 2023 15:00:43 +0200 Subject: [PATCH] container fix for custom fluids, arc welder stuff --- .../hbm/inventory/FluidContainerRegistry.java | 11 ++++++----- .../hbm/tileentity/IConditionalInvAccess.java | 17 +++++++++++++++++ .../hbm/tileentity/TileEntityProxyCombo.java | 12 ++++++++++++ .../tileentity/TileEntityProxyInventory.java | 1 + src/main/java/com/hbm/util/HashedSet.java | 10 +++++++++- .../textures/models/machines/arc_welder.png | Bin 1024 -> 1976 bytes 6 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/hbm/tileentity/IConditionalInvAccess.java diff --git a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java index ce1c1977e..f6f3d2971 100644 --- a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java +++ b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java @@ -62,18 +62,19 @@ public class FluidContainerRegistry { for(int i = 1; i < fluids.length; i++) { FluidType type = fluids[i]; + int id = type.getID(); - if(type.getContainer(CD_Canister.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.canister_full, 1, i), new ItemStack(ModItems.canister_empty), Fluids.fromID(i), 1000)); - if(type.getContainer(CD_Gastank.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.gas_full, 1, i), new ItemStack(ModItems.gas_empty), Fluids.fromID(i), 1000)); + if(type.getContainer(CD_Canister.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.canister_full, 1, id), new ItemStack(ModItems.canister_empty), type, 1000)); + if(type.getContainer(CD_Gastank.class) != null) FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.gas_full, 1, id), new ItemStack(ModItems.gas_empty), type, 1000)); if(type.hasNoContainer()) continue; - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_lead_full, 1, i), new ItemStack(ModItems.fluid_tank_lead_empty), Fluids.fromID(i), 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_lead_full, 1, id), new ItemStack(ModItems.fluid_tank_lead_empty), type, 1000)); if(type.needsLeadContainer()) continue; - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_full, 1, i), new ItemStack(ModItems.fluid_tank_empty), Fluids.fromID(i), 1000)); - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_barrel_full, 1, i), new ItemStack(ModItems.fluid_barrel_empty), Fluids.fromID(i), 16000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_tank_full, 1, id), new ItemStack(ModItems.fluid_tank_empty), type, 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.fluid_barrel_full, 1, id), new ItemStack(ModItems.fluid_barrel_empty), type, 16000)); } Compat.registerCompatFluidContainers(); diff --git a/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java b/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java new file mode 100644 index 000000000..9416eb837 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/IConditionalInvAccess.java @@ -0,0 +1,17 @@ +package com.hbm.tileentity; + +import net.minecraft.item.ItemStack; + +/** + * Masks operation such as isItemValidForSlot and getAccessibleSlotsFromSide found in ISidedInveotry + * Intended to be used to return a different result depending on the port, assuming the port detects IConditionalInvAccess + * + * @author hbm + */ +public interface IConditionalInvAccess { + + public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack); + public boolean canInsertItem(int x, int y, int z, int slot, ItemStack stack, int side); + public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side); + public int[] getAccessibleSlotsFromSide(int x, int y, int z, int side); +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 18d109586..eb4a603e0 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -361,6 +361,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).isItemValidForSlot(xCoord, yCoord, zCoord, slot, stack); + return ((ISidedInventory)getTile()).isItemValidForSlot(slot, stack); } @@ -374,6 +377,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return new int[0]; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).getAccessibleSlotsFromSide(xCoord, yCoord, zCoord, side); + return ((ISidedInventory)getTile()).getAccessibleSlotsFromSide(side); } @@ -387,6 +393,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).canInsertItem(xCoord, yCoord, zCoord, i, stack, j); + return ((ISidedInventory)getTile()).canInsertItem(i, stack, j); } @@ -400,6 +409,9 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return false; if(getTile() instanceof ISidedInventory) { + + if(getTile() instanceof IConditionalInvAccess) return ((IConditionalInvAccess) getTile()).canExtractItem(xCoord, yCoord, zCoord, i, stack, j); + return ((ISidedInventory)getTile()).canExtractItem(i, stack, j); } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java b/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java index 9e348c0b4..ce4208ccc 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyInventory.java @@ -5,6 +5,7 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +@Deprecated public class TileEntityProxyInventory extends TileEntityProxyBase implements ISidedInventory { @Override diff --git a/src/main/java/com/hbm/util/HashedSet.java b/src/main/java/com/hbm/util/HashedSet.java index cdb13cdee..6a45c952b 100644 --- a/src/main/java/com/hbm/util/HashedSet.java +++ b/src/main/java/com/hbm/util/HashedSet.java @@ -105,7 +105,15 @@ public class HashedSet implements Set { @Override public boolean remove(Object o) { - return false; + T obj = this.map.get(o.hashCode()); + boolean rem = false; + + if(obj != null) { + rem = true; + this.map.remove(o.hashCode()); + } + + return rem; } @Override diff --git a/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png b/src/main/resources/assets/hbm/textures/models/machines/arc_welder.png index d85de397f72547ed4600d83282aa63896a1db313..7dc4193e8a25df93e244f20dc88eb776263a0b65 100644 GIT binary patch delta 1947 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 JPDHLkV1hBR)rSB8