aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gtPlusPlus/xmod/gregtech
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2022-01-07 16:24:37 +0000
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2022-01-07 16:24:37 +0000
commit53da73a35860acd285baa0ccab5aef4ff4f6bd98 (patch)
tree8a8ed6df5de3a8a94884e182a59122e87bc9f222 /src/main/java/gtPlusPlus/xmod/gregtech
parentd579f2d2b41922dbee4c2146833b257bfeab4ecd (diff)
downloadGT5-Unofficial-53da73a35860acd285baa0ccab5aef4ff4f6bd98.tar.gz
GT5-Unofficial-53da73a35860acd285baa0ccab5aef4ff4f6bd98.tar.bz2
GT5-Unofficial-53da73a35860acd285baa0ccab5aef4ff4f6bd98.zip
Rewrote and readded Bronze/Advanced Workbenches using GT Meta Tile system.
Diffstat (limited to 'src/main/java/gtPlusPlus/xmod/gregtech')
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_Container_AdvancedWorkbench.java124
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_Container_BronzeWorkbench.java120
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_GUIContainer_AdvancedWorkbench.java84
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_GUIContainer_BronzeWorkbench.java13
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java17
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java163
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_AdvancedCraftingTable.java550
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_BronzeCraftingTable.java91
-rw-r--r--src/main/java/gtPlusPlus/xmod/gregtech/registration/gregtech/Gregtech4Content.java17
9 files changed, 1169 insertions, 10 deletions
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_Container_AdvancedWorkbench.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_Container_AdvancedWorkbench.java
new file mode 100644
index 0000000000..d7ec19a9ac
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_Container_AdvancedWorkbench.java
@@ -0,0 +1,124 @@
+package gtPlusPlus.xmod.gregtech.api.gui.workbench;
+
+import gregtech.api.gui.GT_ContainerMetaTile_Machine;
+import gregtech.api.gui.GT_Slot_Holo;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.slots.SlotBlueprint;
+import gtPlusPlus.core.slots.SlotElectric;
+import gtPlusPlus.xmod.gregtech.common.tileentities.storage.GT_MetaTileEntity_AdvancedCraftingTable;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class GT_Container_AdvancedWorkbench extends GT_ContainerMetaTile_Machine {
+
+ public GT_Container_AdvancedWorkbench(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) {
+ super(aInventoryPlayer, aTileEntity);
+ }
+
+ public void addSlots(InventoryPlayer aInventoryPlayer) {
+ addSlotToContainer(new Slot(mTileEntity, 0, 8, 8));
+ addSlotToContainer(new Slot(mTileEntity, 1, 26, 8));
+ addSlotToContainer(new Slot(mTileEntity, 2, 44, 8));
+ addSlotToContainer(new Slot(mTileEntity, 3, 62, 8));
+ addSlotToContainer(new Slot(mTileEntity, 4, 8, 26));
+ addSlotToContainer(new Slot(mTileEntity, 5, 26, 26));
+ addSlotToContainer(new Slot(mTileEntity, 6, 44, 26));
+ addSlotToContainer(new Slot(mTileEntity, 7, 62, 26));
+ addSlotToContainer(new Slot(mTileEntity, 8, 8, 44));
+ addSlotToContainer(new Slot(mTileEntity, 9, 26, 44));
+ addSlotToContainer(new Slot(mTileEntity, 10, 44, 44));
+ addSlotToContainer(new Slot(mTileEntity, 11, 62, 44));
+ addSlotToContainer(new Slot(mTileEntity, 12, 8, 62));
+ addSlotToContainer(new Slot(mTileEntity, 13, 26, 62));
+ addSlotToContainer(new Slot(mTileEntity, 14, 44, 62));
+ addSlotToContainer(new Slot(mTileEntity, 15, 62, 62));
+
+ addSlotToContainer(new SlotElectric(mTileEntity, 16, 82, 8));
+ addSlotToContainer(new SlotElectric(mTileEntity, 17, 100, 8));
+ addSlotToContainer(new SlotElectric(mTileEntity, 18, 118, 8));
+ addSlotToContainer(new SlotElectric(mTileEntity, 19, 136, 8));
+ addSlotToContainer(new SlotElectric(mTileEntity, 20, 154, 8));
+
+ addSlotToContainer(new Slot(mTileEntity, 21, 82, 28));
+ addSlotToContainer(new Slot(mTileEntity, 22, 100, 28));
+ addSlotToContainer(new Slot(mTileEntity, 23, 118, 28));
+ addSlotToContainer(new Slot(mTileEntity, 24, 82, 46));
+ addSlotToContainer(new Slot(mTileEntity, 25, 100, 46));
+ addSlotToContainer(new Slot(mTileEntity, 26, 118, 46));
+ addSlotToContainer(new Slot(mTileEntity, 27, 82, 64));
+ addSlotToContainer(new Slot(mTileEntity, 28, 100, 64));
+ addSlotToContainer(new Slot(mTileEntity, 29, 118, 64));
+
+ addSlotToContainer(new Slot(mTileEntity, 33, 154, 28));
+ addSlotToContainer(new Slot(mTileEntity, 34, 154, 64));
+
+ addSlotToContainer(new SlotBlueprint(mTileEntity, 30, 136, 28));
+ addSlotToContainer(new GT_Slot_Holo(mTileEntity, 31, 136, 64, false, false, 1));
+ addSlotToContainer(new GT_Slot_Holo(mTileEntity, 32, 154, 46, false, false, 1));
+ addSlotToContainer(new GT_Slot_Holo(mTileEntity, 32, 136, 46, false, false, 1));
+
+ }
+
+ public ItemStack slotClick(int aSlotIndex, int aMouseclick, int aShifthold, EntityPlayer aPlayer) {
+ Logger.INFO("Clicked on slot "+aSlotIndex);
+ if (aSlotIndex < 21 || aSlotIndex > 35) return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ if (mTileEntity == null || mTileEntity.getMetaTileEntity() == null) return null;
+ try {
+ ItemStack tStack = ((Slot)inventorySlots.get(aSlotIndex)).getStack();
+ if (tStack != null && tStack.stackSize <= 0 && !GT_Utility.areStacksEqual(tStack, aPlayer.inventory.getItemStack())) {
+ return null;
+ }
+ if (aSlotIndex == 32) {
+ if (aMouseclick == 0 && aShifthold == 1) {
+ ((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).setBluePrint(null);
+ return null;
+ }
+ } else if (aSlotIndex == 33) {
+ ItemStack tStack2, tCraftedStack = ((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).getCraftingOutput();
+ if (tCraftedStack != null) {
+ if (aShifthold == 1) {
+ for (byte i = 0; i < aPlayer.inventory.mainInventory.length; i++) {
+ for (byte j = 0; j < tCraftedStack.getMaxStackSize() / tCraftedStack.stackSize && ((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).canDoCraftingOutput(); j++) {
+ if (!GT_Utility.areStacksEqual(tStack2 = ((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).getCraftingOutput(), tCraftedStack) || tStack.stackSize != tStack2.stackSize) return aPlayer.inventory.getItemStack();
+ aPlayer.inventory.mainInventory[i] = (((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.mainInventory[i]));
+ }
+ }
+ } else {
+ if (aMouseclick == 0) {
+ if (((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).canDoCraftingOutput()) aPlayer.inventory.setItemStack(((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.getItemStack()));
+ return aPlayer.inventory.getItemStack();
+ } else {
+ for (int i = 0; i < tCraftedStack.getMaxStackSize() / tCraftedStack.stackSize && ((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).canDoCraftingOutput(); i++) {
+ if (!GT_Utility.areStacksEqual(tStack2 = ((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).getCraftingOutput(), tCraftedStack) || tStack.stackSize != tStack2.stackSize) return aPlayer.inventory.getItemStack();
+ aPlayer.inventory.setItemStack(((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.getItemStack()));
+ }
+ return aPlayer.inventory.getItemStack();
+ }
+ }
+ }
+ return null;
+ } else if (aSlotIndex == 34) {
+ ((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).mFlushMode = true;
+ return null;
+ } else if (aSlotIndex == 35) {
+ ((GT_MetaTileEntity_AdvancedCraftingTable)mTileEntity.getMetaTileEntity()).sortIntoTheInputSlots();
+ return null;
+ }
+ } catch(Throwable e) {
+ //GT_Log.log.catching(e);
+ }
+ return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ }
+
+ public int getSlotCount() {
+ return 33;
+ }
+
+ public int getShiftClickSlotCount() {
+ return 21;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_Container_BronzeWorkbench.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_Container_BronzeWorkbench.java
new file mode 100644
index 0000000000..f7cfd31e5d
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_Container_BronzeWorkbench.java
@@ -0,0 +1,120 @@
+package gtPlusPlus.xmod.gregtech.api.gui.workbench;
+
+import gregtech.api.gui.GT_ContainerMetaTile_Machine;
+import gregtech.api.gui.GT_Slot_Holo;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.xmod.gregtech.common.tileentities.storage.GT_MetaTileEntity_BronzeCraftingTable;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+
+public class GT_Container_BronzeWorkbench extends GT_ContainerMetaTile_Machine {
+
+ public GT_Container_BronzeWorkbench(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) {
+ super(aInventoryPlayer, aTileEntity);
+ }
+
+ public void addSlots(InventoryPlayer aInventoryPlayer) {
+ addSlotToContainer(new Slot(mTileEntity, 0, 8, 8));
+ addSlotToContainer(new Slot(mTileEntity, 1, 26, 8));
+ addSlotToContainer(new Slot(mTileEntity, 2, 44, 8));
+ addSlotToContainer(new Slot(mTileEntity, 3, 62, 8));
+ addSlotToContainer(new Slot(mTileEntity, 4, 8, 26));
+ addSlotToContainer(new Slot(mTileEntity, 5, 26, 26));
+ addSlotToContainer(new Slot(mTileEntity, 6, 44, 26));
+ addSlotToContainer(new Slot(mTileEntity, 7, 62, 26));
+ addSlotToContainer(new Slot(mTileEntity, 8, 8, 44));
+ addSlotToContainer(new Slot(mTileEntity, 9, 26, 44));
+ addSlotToContainer(new Slot(mTileEntity, 10, 44, 44));
+ addSlotToContainer(new Slot(mTileEntity, 11, 62, 44));
+ addSlotToContainer(new Slot(mTileEntity, 12, 8, 62));
+ addSlotToContainer(new Slot(mTileEntity, 13, 26, 62));
+ addSlotToContainer(new Slot(mTileEntity, 14, 44, 62));
+ addSlotToContainer(new Slot(mTileEntity, 15, 62, 62));
+
+ addSlotToContainer(new Slot(mTileEntity, 16, 82, 8));
+ addSlotToContainer(new Slot(mTileEntity, 17, 100, 8));
+ addSlotToContainer(new Slot(mTileEntity, 18, 118, 8));
+ addSlotToContainer(new Slot(mTileEntity, 19, 136, 8));
+ addSlotToContainer(new Slot(mTileEntity, 20, 154, 8));
+
+ addSlotToContainer(new Slot(mTileEntity, 21, 82, 28));
+ addSlotToContainer(new Slot(mTileEntity, 22, 100, 28));
+ addSlotToContainer(new Slot(mTileEntity, 23, 118, 28));
+ addSlotToContainer(new Slot(mTileEntity, 24, 82, 46));
+ addSlotToContainer(new Slot(mTileEntity, 25, 100, 46));
+ addSlotToContainer(new Slot(mTileEntity, 26, 118, 46));
+ addSlotToContainer(new Slot(mTileEntity, 27, 82, 64));
+ addSlotToContainer(new Slot(mTileEntity, 28, 100, 64));
+ addSlotToContainer(new Slot(mTileEntity, 29, 118, 64));
+
+ addSlotToContainer(new Slot(mTileEntity, 33, 154, 28));
+ addSlotToContainer(new Slot(mTileEntity, 34, 154, 64));
+
+ addSlotToContainer(new Slot(mTileEntity, 30, 136, 28));
+ addSlotToContainer(new GT_Slot_Holo(mTileEntity, 31, 136, 64, false, false, 1));
+ addSlotToContainer(new GT_Slot_Holo(mTileEntity, 32, 154, 46, false, false, 1));
+ addSlotToContainer(new GT_Slot_Holo(mTileEntity, 32, 136, 46, false, false, 1));
+
+ }
+
+ public ItemStack slotClick(int aSlotIndex, int aMouseclick, int aShifthold, EntityPlayer aPlayer) {
+ if (aSlotIndex < 21 || aSlotIndex > 35) return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ if (mTileEntity == null || mTileEntity.getMetaTileEntity() == null) return null;
+ try {
+ ItemStack tStack = ((Slot)inventorySlots.get(aSlotIndex)).getStack();
+ if (tStack != null && tStack.stackSize <= 0 && !GT_Utility.areStacksEqual(tStack, aPlayer.inventory.getItemStack())) {
+ return null;
+ }
+ if (aSlotIndex == 32) {
+ if (aMouseclick == 0 && aShifthold == 1) {
+ ((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).setBluePrint(null);
+ return null;
+ }
+ } else if (aSlotIndex == 33) {
+ ItemStack tStack2, tCraftedStack = ((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).getCraftingOutput();
+ if (tCraftedStack != null) {
+ if (aShifthold == 1) {
+ for (byte i = 0; i < aPlayer.inventory.mainInventory.length; i++) {
+ for (byte j = 0; j < tCraftedStack.getMaxStackSize() / tCraftedStack.stackSize && ((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).canDoCraftingOutput(); j++) {
+ if (!GT_Utility.areStacksEqual(tStack2 = ((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).getCraftingOutput(), tCraftedStack) || tStack.stackSize != tStack2.stackSize) return aPlayer.inventory.getItemStack();
+ aPlayer.inventory.mainInventory[i] = (((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.mainInventory[i]));
+ }
+ }
+ } else {
+ if (aMouseclick == 0) {
+ if (((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).canDoCraftingOutput()) aPlayer.inventory.setItemStack(((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.getItemStack()));
+ return aPlayer.inventory.getItemStack();
+ } else {
+ for (int i = 0; i < tCraftedStack.getMaxStackSize() / tCraftedStack.stackSize && ((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).canDoCraftingOutput(); i++) {
+ if (!GT_Utility.areStacksEqual(tStack2 = ((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).getCraftingOutput(), tCraftedStack) || tStack.stackSize != tStack2.stackSize) return aPlayer.inventory.getItemStack();
+ aPlayer.inventory.setItemStack(((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.getItemStack()));
+ }
+ return aPlayer.inventory.getItemStack();
+ }
+ }
+ }
+ return null;
+ } else if (aSlotIndex == 34) {
+ ((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).mFlushMode = true;
+ return null;
+ } else if (aSlotIndex == 35) {
+ ((GT_MetaTileEntity_BronzeCraftingTable)mTileEntity.getMetaTileEntity()).sortIntoTheInputSlots();
+ return null;
+ }
+ } catch(Throwable e) {
+ //GT_Log.log.catching(e);
+ }
+ return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ }
+
+ public int getSlotCount() {
+ return 33;
+ }
+
+ public int getShiftClickSlotCount() {
+ return 21;
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_GUIContainer_AdvancedWorkbench.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_GUIContainer_AdvancedWorkbench.java
new file mode 100644
index 0000000000..fc3041f553
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_GUIContainer_AdvancedWorkbench.java
@@ -0,0 +1,84 @@
+package gtPlusPlus.xmod.gregtech.api.gui.workbench;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import gregtech.api.gui.GT_ContainerMetaTile_Machine;
+import gregtech.api.gui.GT_GUIContainerMetaTile_Machine;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.sys.KeyboardUtils;
+import net.minecraft.entity.player.InventoryPlayer;
+
+public class GT_GUIContainer_AdvancedWorkbench extends GT_GUIContainerMetaTile_Machine {
+
+ private final String mLocalName;
+
+ public GT_GUIContainer_AdvancedWorkbench(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aLocalName) {
+ super(new GT_Container_AdvancedWorkbench(aInventoryPlayer, aTileEntity), CORE.RES_PATH_GUI + "AdvancedCraftingTable.png");
+ mLocalName = aLocalName;
+ }
+
+ public GT_GUIContainer_AdvancedWorkbench(GT_ContainerMetaTile_Machine aContainer, String aLocalName, String aResource) {
+ super(aContainer, aResource);
+ mLocalName = aLocalName;
+ }
+
+ @Override
+ protected void drawGuiContainerForegroundLayer(int par1, int par2) {
+ //fontRendererObj.drawString(mLocalName, 8, 4, 4210752);
+ this.drawTooltip(par1, par2);
+ }
+
+ private void drawTooltip(final int x2, final int y2) {
+ final int xStart = (this.width - this.xSize) / 2;
+ final int yStart = (this.height - this.ySize) / 2;
+ final int x3 = x2 - xStart;
+ final int y3 = y2 - yStart + 5;
+ final List<String> list = new ArrayList<String>();
+ //154 - 172
+
+ if (KeyboardUtils.isShiftKeyDown()) {
+ if (y3 >= 30 && y3 <= 49) {
+ if (x3 >= 135 && x3 <= 154) {
+ list.add("Blueprint Slot");
+ list.add("Shift+Lmb Sets to crafting output");
+ }
+ if (x3 >= 153 && x3 <= 170) {
+ list.add("Extraction Slot");
+ list.add("Things can always be pulled from here");
+ }
+ }
+ if (y3 >= 50 && y3 <= 67) {
+ if (x3 >= 135 && x3 <= 152) {
+ list.add("Flush");
+ list.add("Empty crafting grid back to storage");
+ }
+ if (x3 >= 153 && x3 <= 170) {
+ list.add("Automation");
+ list.add("Allows output while");
+ list.add("crafting grid is full");
+ }
+ }
+ if (y3 >= 68 && y3 <= 85){
+ if (x3 >= 135 && x3 <= 152) {
+ list.add("Output Slot");
+ }
+ if (x3 >= 153 && x3 <= 170) {
+ list.add("Free Parking");
+ }
+ }
+ }
+ if (!list.isEmpty()) {
+ this.drawHoveringText(list, x3, y3, this.fontRendererObj);
+ }
+ }
+
+ @Override
+ protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) {
+ super.drawGuiContainerBackgroundLayer(par1, par2, par3);
+ int x = (width - xSize) / 2;
+ int y = (height - ySize) / 2;
+ drawTexturedModalRect(x, y, 0, 0, xSize, ySize);
+ }
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_GUIContainer_BronzeWorkbench.java b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_GUIContainer_BronzeWorkbench.java
new file mode 100644
index 0000000000..178c9241f1
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/api/gui/workbench/GT_GUIContainer_BronzeWorkbench.java
@@ -0,0 +1,13 @@
+package gtPlusPlus.xmod.gregtech.api.gui.workbench;
+
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gtPlusPlus.core.lib.CORE;
+import net.minecraft.entity.player.InventoryPlayer;
+
+public class GT_GUIContainer_BronzeWorkbench extends GT_GUIContainer_AdvancedWorkbench {
+
+ public GT_GUIContainer_BronzeWorkbench(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity, String aLocalName) {
+ super(new GT_Container_BronzeWorkbench(aInventoryPlayer, aTileEntity), aLocalName, CORE.RES_PATH_GUI + "BronzeCraftingTable.png");
+ }
+
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java
index 2fa63e4568..7653224fd2 100644
--- a/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/blocks/textures/TexturesGtBlock.java
@@ -402,10 +402,17 @@ public class TexturesGtBlock {
public static final CustomIcon Overlay_FluidReactor_Top_Active = new CustomIcon("TileEntities/FluidReactor/OVERLAY_TOP_ACTIVE");
//Crafting Overlays
- private static final CustomIcon Internal_Overlay_Crafting_Bronze = new CustomIcon("TileEntities/bronze_top_crafting");
- public static final CustomIcon Overlay_Crafting_Bronze = Internal_Overlay_Crafting_Bronze;
- private static final CustomIcon Internal_Overlay_Crafting_Steel = new CustomIcon("TileEntities/cover_crafting");
- public static final CustomIcon Overlay_Crafting_Steel = Internal_Overlay_Crafting_Steel;
+ public static final CustomIcon Overlay_Crafting_Bronze = new CustomIcon("TileEntities/bronze_top_crafting");
+ public static final CustomIcon Overlay_Crafting_Steel = new CustomIcon("TileEntities/cover_crafting");
+
+ public static final CustomIcon Casing_Workbench_Crafting_Overlay = new CustomIcon("TileEntities/gt4/bronze_top_crafting");
+ public static final CustomIcon Casing_Workbench_Top = new CustomIcon("TileEntities/gt4/bronze_top");
+ public static final CustomIcon Casing_Workbench_Side = new CustomIcon("TileEntities/gt4/bronze_side");
+ public static final CustomIcon Casing_Workbench_Bottom = new CustomIcon("TileEntities/gt4/bronze_bottom");
+ public static final CustomIcon Casing_Adv_Workbench_Crafting_Overlay = new CustomIcon("TileEntities/gt4/machine_top_crafting");
+ public static final CustomIcon Casing_Adv_Workbench_Top = new CustomIcon("TileEntities/gt4/machine_top");
+ public static final CustomIcon Casing_Adv_Workbench_Side = new CustomIcon("TileEntities/gt4/machine_side");
+ public static final CustomIcon Casing_Adv_Workbench_Bottom = new CustomIcon("TileEntities/gt4/machine_bottom");
//Covers
private static final CustomIcon Internal_Overlay_Overflow_Valve = new CustomIcon("iconsets/OVERLAY_OVERFLOW_VALVE");
@@ -443,7 +450,7 @@ public class TexturesGtBlock {
// Lapo Orb Hatch
public static final CustomIcon Overlay_Hatch_Lapo_Orb = new CustomIcon("iconsets/OVERLAY_LAPO");
// Data Orb Hatch
- public static final CustomIcon Overlay_Hatch_Data_Orb = new CustomIcon("iconsets/OVERYLAY_DATA_ORB");
+ public static final CustomIcon Overlay_Hatch_Data_Orb = new CustomIcon("iconsets/OVERLAY_DATA_ORB");
// RTG Hatch
private static final CustomIcon Internal_Overlay_Hatch_RTG_Off = new CustomIcon("iconsets/OVERLAY_ENERGY_RTG_OFF");
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java
new file mode 100644
index 0000000000..92190521cd
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/processing/steam/GregtechMetaTileEntity_SteamCompressor.java
@@ -0,0 +1,163 @@
+package gtPlusPlus.xmod.gregtech.common.tileentities.machines.multi.processing.steam;
+
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofBlock;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.ofChain;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.onElementPass;
+import static com.gtnewhorizon.structurelib.structure.StructureUtility.transpose;
+import static gregtech.api.GregTech_API.sBlockCasings1;
+import static gregtech.api.util.GT_StructureUtility.ofHatchAdder;
+
+import com.gtnewhorizon.structurelib.structure.IStructureDefinition;
+import com.gtnewhorizon.structurelib.structure.StructureDefinition;
+
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_Multiblock_Tooltip_Builder;
+import gregtech.api.util.GT_Recipe;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Steam_BusInput;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.GT_MetaTileEntity_Hatch_Steam_BusOutput;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GT_MetaTileEntity_Hatch_CustomFluidBase;
+import gtPlusPlus.xmod.gregtech.api.metatileentity.implementations.base.GregtechMeta_SteamMultiBase;
+import net.minecraft.item.ItemStack;
+
+public class GregtechMetaTileEntity_SteamCompressor extends GregtechMeta_SteamMultiBase {
+
+ private String mCasingName = "Bronze Plated Bricks";
+ private IStructureDefinition<GregtechMetaTileEntity_SteamCompressor> STRUCTURE_DEFINITION = null;
+ private int mCasing;
+
+ public GregtechMetaTileEntity_SteamCompressor(String aName) {
+ super(aName);
+ }
+
+ public GregtechMetaTileEntity_SteamCompressor(int aID, String aName, String aNameRegional) {
+ super(aID, aName, aNameRegional);
+ }
+
+ @Override
+ public IMetaTileEntity newMetaEntity(IGregTechTileEntity arg0) {
+ return new GregtechMetaTileEntity_SteamCompressor(this.mName);
+ }
+
+ @Override
+ protected GT_RenderedTexture getFrontOverlay() {
+ return new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_TOP_STEAM_MACERATOR);
+ }
+
+ @Override
+ protected GT_RenderedTexture getFrontOverlayActive() {
+ return new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_TOP_STEAM_MACERATOR_ACTIVE);
+ }
+
+ @Override
+ public String getMachineType() {
+ return "Compressor";
+ }
+
+ @Override
+ protected GT_Multiblock_Tooltip_Builder createTooltip() {
+ GT_Multiblock_Tooltip_Builder tt = new GT_Multiblock_Tooltip_Builder();
+ tt.addMachineType(getMachineType())
+ .addInfo("Controller Block for the Steam Macerator")
+ .addInfo("Macerates " + getMaxParallelRecipes() + " ores at a time")
+ .addSeparator()
+ .beginStructureBlock(3, 3, 3, true)
+ .addController("Front center")
+ .addCasingInfo(mCasingName, 14)
+ .addStructureHint("Input Bus (Steam)", 1)
+ .addStructureHint("Output Bus (Steam)", 1)
+ .addStructureHint("Steam Hatch", 1)
+ .toolTipFinisher(CORE.GT_Tooltip_Builder);
+ return tt;
+ }
+
+ @Override
+ public IStructureDefinition<GregtechMetaTileEntity_SteamCompressor> getStructureDefinition() {
+ if (STRUCTURE_DEFINITION == null) {
+ STRUCTURE_DEFINITION = StructureDefinition.<GregtechMetaTileEntity_SteamCompressor>builder()
+ .addShape(mName, transpose(new String[][]{
+ {"CCC", "CCC", "CCC", "CCC"},
+ {"C~C", "C-C", "C-C", "CCC"},
+ {"CCC", "CCC", "CCC", "CCC"},
+ }))
+ .addElement(
+ 'C',
+ ofChain(
+ ofHatchAdder(
+ GregtechMetaTileEntity_SteamCompressor::addSteamMultiList, 10, 1
+ ),
+ onElementPass(
+ x -> ++x.mCasing,
+ ofBlock(
+ sBlockCasings1, 10
+ )
+ )
+ )
+ )
+ .build();
+ }
+ return STRUCTURE_DEFINITION;
+ }
+
+ public final boolean addSteamMultiList(IGregTechTileEntity aTileEntity, int aBaseCasingIndex) {
+ if (aTileEntity == null) {
+ return false;
+ } else {
+ IMetaTileEntity aMetaTileEntity = aTileEntity.getMetaTileEntity();
+ if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_CustomFluidBase && aMetaTileEntity.getBaseMetaTileEntity().getMetaTileID() == 31040){
+ return addToMachineList(aTileEntity, aBaseCasingIndex);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Steam_BusInput){
+ return addToMachineList(aTileEntity, aBaseCasingIndex);
+ } else if (aMetaTileEntity instanceof GT_MetaTileEntity_Hatch_Steam_BusOutput){
+ return addToMachineList(aTileEntity, aBaseCasingIndex);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public void construct(ItemStack stackSize, boolean hintsOnly) {
+ buildPiece(mName, stackSize, hintsOnly, 1, 1, 0);
+ }
+
+ @Override
+ public boolean checkMachine(IGregTechTileEntity aBaseMetaTileEntity, ItemStack aStack) {
+ mCasing = 0;
+ fixAllMaintenanceIssue();
+ return checkPiece(mName, 1, 1, 0) && mCasing >= 14;
+ }
+
+ @Override
+ public int getMaxParallelRecipes() {
+ return 8;
+ }
+
+
+ public GT_Recipe.GT_Recipe_Map getRecipeMap() {
+ return GT_Recipe.GT_Recipe_Map.sCompressorRecipes;
+ }
+
+ @Override
+ public ItemStack[] getOutputItems(GT_Recipe aRecipe) {
+ // Collect output item types
+ ItemStack[] tOutputItems = new ItemStack[1];
+ for (int h = 0; h < 1; h++) {
+ if (aRecipe.getOutput(h) != null) {
+ tOutputItems[h] = aRecipe.getOutput(h).copy();
+ tOutputItems[h].stackSize = 0;
+ }
+ }
+ return tOutputItems;
+ }
+
+ @Override
+ public int getOutputCount(ItemStack[] aOutputs) {
+ return 1;
+ }
+
+
+
+}
diff --git a/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_AdvancedCraftingTable.java b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_AdvancedCraftingTable.java
new file mode 100644
index 0000000000..b5aa916e54
--- /dev/null
+++ b/src/main/java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_AdvancedCraftingTable.java
@@ -0,0 +1,550 @@
+package gtPlusPlus.xmod.gregtech.common.tileentities.storage;
+
+import java.util.ArrayList;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
+import gregtech.api.objects.GT_RenderedTexture;
+import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Utility;
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.core.item.general.ItemBlueprint;
+import gtPlusPlus.core.lib.CORE;
+import gtPlusPlus.core.util.math.MathUtils;
+import gtPlusPlus.xmod.gregtech.api.gui.workbench.GT_Container_AdvancedWorkbench;
+import gtPlusPlus.xmod.gregtech.api.gui.workbench.GT_GUIContainer_AdvancedWorkbench;
+import gtPlusPlus.xmod.gregtech.common.blocks.textures.TexturesGtBlock;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+
+public class GT_MetaTileEntity_AdvancedCraftingTable extends GT_MetaTileEntity_BasicTank {
+
+ public boolean mFlushMode = false;
+
+ protected String mLocalName;
+
+ public GT_MetaTileEntity_AdvancedCraftingTable(final int aID, final String aName, final String aNameRegional, final int aTier, final String aDescription) {
+ super(aID, aName, aNameRegional, aTier, 35, aDescription);
+ mLocalName = aNameRegional;
+ }
+
+ public GT_MetaTileEntity_AdvancedCraftingTable(final String aName, final int aTier, final String aDescription, final ITexture[][][] aTextures) {
+ super(aName, aTier, 35, aDescription, aTextures);
+ }
+
+ @Override
+ public Object getServerGUI(final int aID, final InventoryPlayer aPlayerInventory, final IGregTechTileEntity aBaseMetaTileEntity) {
+ return new GT_Container_AdvancedWorkbench(aPlayerInventory, aBaseMetaTileEntity);
+ }
+
+ @Override
+ public Object getClientGUI(final int aID, final InventoryPlayer aPlayerInventory, final IGregTechTileEntity aBaseMetaTileEntity) {
+ return new GT_GUIContainer_AdvancedWorkbench(aPlayerInventory, aBaseMetaTileEntity, mLocalName);
+ }
+
+ @Override
+ public boolean isTransformerUpgradable() {
+ return true;
+ }
+ @Override
+ public boolean isSimpleMachine() {
+ return true;
+ }
+ @Override
+ public boolean isValidSlot(int aIndex) {
+ return aIndex < 31 || aIndex > 32;
+ }
+ @Override
+ public boolean isFacingValid(byte aFacing) {
+ return true;
+ }
+ @Override
+ public boolean isAccessAllowed(EntityPlayer aPlayer) {
+ return true;
+ }
+ @Override
+ public boolean isEnetInput() {
+ return isElectric();
+ }
+ @Override
+ public boolean isInputFacing(byte aSide) {
+ return true;
+ }
+ @Override
+ public long maxEUInput() {
+ return isElectric() ? GT_Values.V[3] : 0;
+ }
+ @Override
+ public long maxEUStore() {
+ return isElectric() ? GT_Values.V[3] * 1024 : 0;
+ }
+
+ @Override
+ public boolean isElectric() {
+ return isAdvanced();
+ }
+
+ @Override
+ public boolean isPneumatic() {
+ return false;
+ }
+
+ @Override
+ public boolean isSteampowered() {
+ return false;
+ }
+
+ @Override
+ public long maxAmperesIn() {
+ return isElectric() ? 2 : 0;
+ }
+
+ @Override
+ public long getMinimumStoredEU() {
+ return isElectric() ? GT_Values.V[3] * 2 : 0;
+ }
+
+ @Override
+ public int getSizeInventory() {
+ return 35;
+ }
+
+ @Override
+ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
+ return new GT_MetaTileEntity_AdvancedCraftingTable(this.mName, this.mTier, this.mDescription, this.mTextures);
+ }
+
+ @Override
+ public boolean onRightclick(final IGregTechTileEntity aBaseMetaTileEntity, final EntityPlayer aPlayer) {
+ if (aBaseMetaTileEntity.isClientSide()) {
+ return true;
+ }
+ aBaseMetaTileEntity.openGUI(aPlayer);
+ return true;
+ }
+
+ @Override
+ public boolean doesFillContainers() {
+ return false;
+ }
+ @Override
+ public boolean doesEmptyContainers() {
+ return false;
+ }
+ @Override
+ public boolean canTankBeFilled() {
+ return true;
+ }
+ @Override
+ public boolean canTankBeEmptied() {
+ return true;
+ }
+ @Override
+ public boolean displaysItemStack() {
+ return false;
+ }
+ @Override
+ public boolean displaysStackSize() {
+ return false;
+ }
+
+ public void sortIntoTheInputSlots() {
+ for (byte i = 21; i < 30; i++)
+ if (mInventory[i] != null) {
+ if (mInventory[i].stackSize == 0) {
+ mInventory[i] = null;
+ }
+ if (mInventory[i] != null)
+ for (byte j = 0; j < 16; j++) {
+ if (GT_Utility.areStacksEqual(
+ mInventory[i], mInventory[j]
+ )) {
+ GT_Utility.moveStackFromSlotAToSlotB(
+ getBaseMetaTileEntity(), getBaseMetaTileEntity(), i, j, (byte) 64, (byte) 1, (byte) 64, (byte) 1
+ );
+ }
+ }
+ if (mInventory[i] != null)
+ for (byte j = 0; j < 16; j++) {
+ if (mInventory[j] == null) {
+ GT_Utility.moveStackFromSlotAToSlotB(
+ getBaseMetaTileEntity(), getBaseMetaTileEntity(), i, j, (byte) 64, (byte) 1, (byte) 64, (byte) 1
+ );
+ }
+ }
+ }
+ }
+
+ private void fillLiquidContainers() {
+ for (byte i = 16; i < 21 && mFluid != null; i++) {
+ ItemStack tOutput = GT_Utility.fillFluidContainer(mFluid, mInventory[i], false, true);
+ if (tOutput != null) {
+ if (mInventory[i].stackSize == 1) {
+ mFluid.amount -= GT_Utility.getFluidForFilledItem(
+ tOutput, true
+ ).amount * tOutput.stackSize;
+ mInventory[i] = tOutput;
+ }
+ else
+ for (byte j = 16; j < 21; j++) {
+ if (mInventory[j] == null || (GT_Utility.areStacksEqual(
+ tOutput, mInventory[j]
+ ) && mInventory[j].stackSize
+ + tOutput.stackSize <= tOutput.getMaxStackSize())) {
+ mFluid.amount -= GT_Utility.getFluidForFilledItem(
+ tOutput, true
+ ).amount * tOutput.stackSize;