From eb8155b11b6cbbe487f80e1ceeda04900dc7dd42 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Sat, 1 Jun 2024 15:23:47 -0400 Subject: [PATCH] Container base class to make life easier --- .../inventory/container/ContainerBase.java | 67 +++++++++++++++++++ .../container/ContainerCrateBase.java | 50 +++----------- .../container/ContainerCrateDesh.java | 11 +-- .../container/ContainerCrateIron.java | 13 +--- .../container/ContainerCrateSteel.java | 12 +--- .../container/ContainerCrateTemplate.java | 12 +--- .../container/ContainerCrateTungsten.java | 12 +--- .../container/ContainerDroneDock.java | 12 +--- .../container/ContainerDroneProvider.java | 12 +--- .../container/ContainerDroneRequester.java | 24 +++---- 10 files changed, 98 insertions(+), 127 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/container/ContainerBase.java diff --git a/src/main/java/com/hbm/inventory/container/ContainerBase.java b/src/main/java/com/hbm/inventory/container/ContainerBase.java new file mode 100644 index 000000000..8f05a3e5c --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerBase.java @@ -0,0 +1,67 @@ +package com.hbm.inventory.container; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +/**For now, only used for stuff with filters and crates as a reference implementation, + * because I really needed to get the te from a container + * But you should very much use this to kill the giant amount of boilerplate in container classes + * @author 70k **/ +public class ContainerBase extends Container { + + protected IInventory te; + + public ContainerBase (InventoryPlayer invPlayer, IInventory tedf){ + te = tedf; + } + @Override + public boolean canInteractWith(EntityPlayer player) { + return te.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= te.getSizeInventory() - 1) { + if(!this.mergeItemStack(var5, te.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else if(!this.mergeItemStack(var5, 0, te.getSizeInventory(), false)) { + return null; + } + + if(var5.stackSize == 0) { + var4.putStack(null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(p_82846_1_, var5); + } + + return var3; + } + + public void playerInv(InventoryPlayer invPlayer, int playerInvX, int playerInvY, int playerHotbarY){ + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, playerInvX + j * 18, playerInvY + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, playerInvX + i * 18, playerHotbarY)); + } + } + +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateBase.java b/src/main/java/com/hbm/inventory/container/ContainerCrateBase.java index 407e44483..4207fec3b 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateBase.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateBase.java @@ -1,57 +1,25 @@ package com.hbm.inventory.container; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; -public class ContainerCrateBase extends Container { - - protected IInventory crate; +public class ContainerCrateBase extends ContainerBase { - public ContainerCrateBase(IInventory tedf) { - crate = tedf; - crate.openInventory(); + //just there so prev stuff doesnt break + protected IInventory crate = te; + + public ContainerCrateBase(InventoryPlayer invPlayer, IInventory tedf) { + super(invPlayer, tedf); + te.openInventory(); } - @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { - ItemStack var3 = null; - Slot var4 = (Slot) this.inventorySlots.get(par2); - - if(var4 != null && var4.getHasStack()) { - ItemStack var5 = var4.getStack(); - var3 = var5.copy(); - - if(par2 <= crate.getSizeInventory() - 1) { - if(!this.mergeItemStack(var5, crate.getSizeInventory(), this.inventorySlots.size(), true)) { - return null; - } - } else if(!this.mergeItemStack(var5, 0, crate.getSizeInventory(), false)) { - return null; - } - - if(var5.stackSize == 0) { - var4.putStack((ItemStack) null); - } else { - var4.onSlotChanged(); - } - - var4.onPickupFromSlot(p_82846_1_, var5); - } - - return var3; - } - - @Override - public boolean canInteractWith(EntityPlayer player) { - return crate.isUseableByPlayer(player); - } - @Override public void onContainerClosed(EntityPlayer p_75134_1_) { super.onContainerClosed(p_75134_1_); - this.crate.closeInventory(); + te.closeInventory(); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateDesh.java b/src/main/java/com/hbm/inventory/container/ContainerCrateDesh.java index 4a7aec618..b38021386 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateDesh.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateDesh.java @@ -7,7 +7,7 @@ import net.minecraft.inventory.Slot; public class ContainerCrateDesh extends ContainerCrateBase { public ContainerCrateDesh(InventoryPlayer invPlayer, IInventory tedf) { - super(tedf); + super(invPlayer,tedf); for(int i = 0; i < 8; i++) { for(int j = 0; j < 13; j++) { @@ -15,14 +15,7 @@ public class ContainerCrateDesh extends ContainerCrateBase { } } - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 44 + j * 18, 174 + i * 18)); - } - } + this.playerInv(invPlayer,44, 174, 232); - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 44 + i * 18, 232)); - } } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java b/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java index 26bdada96..533e1b866 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java @@ -9,22 +9,13 @@ import net.minecraft.inventory.Slot; public class ContainerCrateIron extends ContainerCrateBase { public ContainerCrateIron(InventoryPlayer invPlayer, TileEntityCrateIron tedf) { - super(tedf); + super(invPlayer,tedf); for(int i = 0; i < 4; i++) { for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(tedf, j + i * 9, 8 + j * 18, 18 + i * 18)); } } - - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 20)); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 20)); - } + this.playerInv(invPlayer, 8, 84 + 20, 142 + 20); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateSteel.java b/src/main/java/com/hbm/inventory/container/ContainerCrateSteel.java index 3623790f4..1a2c74c2e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateSteel.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateSteel.java @@ -8,7 +8,7 @@ import net.minecraft.inventory.Slot; public class ContainerCrateSteel extends ContainerCrateBase { public ContainerCrateSteel(InventoryPlayer invPlayer, IInventory tedf) { - super(tedf); + super(invPlayer,tedf); for(int i = 0; i < 6; i++) { for(int j = 0; j < 9; j++) { @@ -16,14 +16,6 @@ public class ContainerCrateSteel extends ContainerCrateBase { } } - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + (18 * 3) + 2)); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + (18 * 3) + 2)); - } + this.playerInv(invPlayer,8, 84 + (18 * 3) + 2, 142 + (18 * 3) + 2); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java b/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java index 122c301e4..26c000a8e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java @@ -8,7 +8,7 @@ import net.minecraft.inventory.Slot; public class ContainerCrateTemplate extends ContainerCrateBase { public ContainerCrateTemplate(InventoryPlayer invPlayer, TileEntityCrateTemplate tedf) { - super(tedf); + super(invPlayer,tedf); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { @@ -16,14 +16,6 @@ public class ContainerCrateTemplate extends ContainerCrateBase { } } - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 86 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 144)); - } + this.playerInv(invPlayer,8, 86, 144); } } \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateTungsten.java b/src/main/java/com/hbm/inventory/container/ContainerCrateTungsten.java index 8d5843275..6cfde0672 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateTungsten.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateTungsten.java @@ -9,7 +9,7 @@ import net.minecraft.inventory.Slot; public class ContainerCrateTungsten extends ContainerCrateBase { public ContainerCrateTungsten(InventoryPlayer invPlayer, TileEntityCrateTungsten te) { - super(te); + super(invPlayer,te); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { @@ -17,14 +17,6 @@ public class ContainerCrateTungsten extends ContainerCrateBase { } } - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 32 + i * 18 + (18 * 3))); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 90 + (18 * 3))); - } + this.playerInv(invPlayer,8, 32 + 18 * 3, 90 + (18 * 3)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java b/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java index 913ee1dd3..34a435649 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneDock.java @@ -8,7 +8,7 @@ import net.minecraft.inventory.Slot; public class ContainerDroneDock extends ContainerCrateBase { public ContainerDroneDock(InventoryPlayer invPlayer, TileEntityDroneDock tedf) { - super(tedf); + super(invPlayer,tedf); for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { @@ -16,14 +16,6 @@ public class ContainerDroneDock extends ContainerCrateBase { } } - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); - } + this.playerInv(invPlayer, 8, 103, 161); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java index 7b818dc8d..7be7ed4db 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneProvider.java @@ -8,7 +8,7 @@ import net.minecraft.inventory.Slot; public class ContainerDroneProvider extends ContainerCrateBase { public ContainerDroneProvider(InventoryPlayer invPlayer, TileEntityDroneProvider tedf) { - super(tedf); + super(invPlayer,tedf); for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { @@ -16,14 +16,6 @@ public class ContainerDroneProvider extends ContainerCrateBase { } } - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); - } + this.playerInv(invPlayer, 8, 103, 161); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java index d728d69c3..7d1a6775d 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java +++ b/src/main/java/com/hbm/inventory/container/ContainerDroneRequester.java @@ -9,10 +9,10 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; public class ContainerDroneRequester extends ContainerCrateBase { - + public ContainerDroneRequester(InventoryPlayer invPlayer, TileEntityDroneRequester tedf) { - super(tedf); - + super(invPlayer,tedf); + for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { this.addSlotToContainer(new SlotPattern(tedf, j + i * 3, 98 + j * 18, 17 + i * 18)); @@ -25,15 +25,7 @@ public class ContainerDroneRequester extends ContainerCrateBase { } } - for(int i = 0; i < 3; i++) { - for(int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); - } - } - - for(int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); - } + this.playerInv(invPlayer, 8, 103, 161); } @Override @@ -44,7 +36,7 @@ public class ContainerDroneRequester extends ContainerCrateBase { if(var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); - + if(par2 < 9) return null; //ignore filters if(par2 <= crate.getSizeInventory() - 1) { @@ -69,18 +61,18 @@ public class ContainerDroneRequester extends ContainerCrateBase { @Override public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { - + //L/R: 0 //M3: 3 //SHIFT: 1 //DRAG: 5 - + if(index < 0 || index > 8) { return super.slotClick(index, button, mode, player); } Slot slot = this.getSlot(index); - + ItemStack ret = null; ItemStack held = player.inventory.getItemStack(); TileEntityDroneRequester requester = (TileEntityDroneRequester) crate;