aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDraknyte1 <Draknyte1@hotmail.com>2016-10-07 02:03:46 +1000
committerDraknyte1 <Draknyte1@hotmail.com>2016-10-07 02:03:46 +1000
commit676a51a4c93713b3498508e13fae0869045f6f49 (patch)
treeac08d69405c23baadbcc37e9103153f6c06b1324 /src
parent8c6406887cbe6b2d27cead77c6605639d73012ef (diff)
downloadGT5-Unofficial-676a51a4c93713b3498508e13fae0869045f6f49.tar.gz
GT5-Unofficial-676a51a4c93713b3498508e13fae0869045f6f49.tar.bz2
GT5-Unofficial-676a51a4c93713b3498508e13fae0869045f6f49.zip
+ Added the Bronze and Advanced Work benches from GT4, still hell buggy but a WIP.
// Temporarily added Workbench registration to the Tiered Tanks Loader. % Added some logging to the Plate Generation. $ Fixed getTexture() in BaseMetaTileEntityEx.java to now support all branches of Gregtech.
Diffstat (limited to 'src')
-rw-r--r--src/Java/gregtech/api/metatileentity/BaseMetaTileEntityEx.java12
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java5
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_AdvancedWorkbench.java161
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_BronzeWorkbench.java161
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_AdvancedWorkbench.java30
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_BronzeWorkbench.java30
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_AdvancedCraftingTable.java555
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_BronzeCraftingTable.java160
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java93
-rw-r--r--src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredFluidTanks.java9
-rw-r--r--src/resources/assets/miscutils/textures/gui/AdvancedCraftingTable.pngbin0 -> 4330 bytes
-rw-r--r--src/resources/assets/miscutils/textures/gui/BronzeCraftingTable.pngbin0 -> 2053 bytes
12 files changed, 1199 insertions, 17 deletions
diff --git a/src/Java/gregtech/api/metatileentity/BaseMetaTileEntityEx.java b/src/Java/gregtech/api/metatileentity/BaseMetaTileEntityEx.java
index 1669a11f9a..955b7eb045 100644
--- a/src/Java/gregtech/api/metatileentity/BaseMetaTileEntityEx.java
+++ b/src/Java/gregtech/api/metatileentity/BaseMetaTileEntityEx.java
@@ -1108,7 +1108,7 @@ public class BaseMetaTileEntityEx extends BaseTileEntity implements IGregTechTil
return 0;
}
- @Override
+
public ITexture[] getTexture(byte aSide) {
ITexture rIcon = getCoverTexture(aSide);
if (rIcon != null) return new ITexture[]{rIcon};
@@ -1116,6 +1116,15 @@ public class BaseMetaTileEntityEx extends BaseTileEntity implements IGregTechTil
return mMetaTileEntity.getTexture(this, aSide, mFacing, (byte) (mColor - 1), mActive, getOutputRedstoneSignal(aSide) > 0);
return Textures.BlockIcons.ERROR_RENDERING;
}
+
+
+ public ITexture[] getTexture(Block arg0, byte aSide) {
+ ITexture rIcon = getCoverTexture(aSide);
+ if (rIcon != null) return new ITexture[]{rIcon};
+ if (hasValidMetaTileEntity())
+ return mMetaTileEntity.getTexture(this, aSide, mFacing, (byte) (mColor - 1), mActive, getOutputRedstoneSignal(aSide) > 0);
+ return Textures.BlockIcons.ERROR_RENDERING;
+ }
private boolean isEnergyInputSide(byte aSide) {
if (aSide >= 0 && aSide < 6) {
@@ -2078,4 +2087,5 @@ public class BaseMetaTileEntityEx extends BaseTileEntity implements IGregTechTil
public void onEntityCollidedWithBlock(World aWorld, int aX, int aY, int aZ, Entity collider) {
mMetaTileEntity.onEntityCollidedWithBlock(aWorld, aX, aY, aZ, collider);
}
+
} \ No newline at end of file
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
index 6f492ef2b9..de0a72f484 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/enums/GregtechItemList.java
@@ -122,7 +122,10 @@ public enum GregtechItemList implements GregtechItemContainer {
Fluid_Cell_1L, Fluid_Cell_16L, Fluid_Cell_36L, Fluid_Cell_144L,
//Multitank
- Industrial_MultiTank, Industrial_MultiTankDense, Casing_MultitankExterior;
+ Industrial_MultiTank, Industrial_MultiTankDense, Casing_MultitankExterior,
+
+ //Gt4 Workbenches
+ GT4_Workbench_Bronze, GT4_Workbench_Advanced;
public static final GregtechItemList[]
DYE_ONLY_ITEMS = {
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_AdvancedWorkbench.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_AdvancedWorkbench.java
new file mode 100644
index 0000000000..bb7982afe3
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_AdvancedWorkbench.java
@@ -0,0 +1,161 @@
+package gtPlusPlus.xmod.gregtech.api.gui;
+
+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_Log;
+import gregtech.api.util.GT_Utility;
+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 CONTAINER_AdvancedWorkbench
+extends GT_ContainerMetaTile_Machine
+{
+ public CONTAINER_AdvancedWorkbench(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity)
+ {
+ super(aInventoryPlayer, aTileEntity);
+ }
+
+ @Override
+ public void addSlots(InventoryPlayer aInventoryPlayer)
+ {
+ addSlotToContainer(new Slot(this.mTileEntity, 0, 8, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 1, 26, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 2, 44, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 3, 62, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 4, 8, 26));
+ addSlotToContainer(new Slot(this.mTileEntity, 5, 26, 26));
+ addSlotToContainer(new Slot(this.mTileEntity, 6, 44, 26));
+ addSlotToContainer(new Slot(this.mTileEntity, 7, 62, 26));
+ addSlotToContainer(new Slot(this.mTileEntity, 8, 8, 44));
+ addSlotToContainer(new Slot(this.mTileEntity, 9, 26, 44));
+ addSlotToContainer(new Slot(this.mTileEntity, 10, 44, 44));
+ addSlotToContainer(new Slot(this.mTileEntity, 11, 62, 44));
+ addSlotToContainer(new Slot(this.mTileEntity, 12, 8, 62));
+ addSlotToContainer(new Slot(this.mTileEntity, 13, 26, 62));
+ addSlotToContainer(new Slot(this.mTileEntity, 14, 44, 62));
+ addSlotToContainer(new Slot(this.mTileEntity, 15, 62, 62));
+
+ addSlotToContainer(new Slot(this.mTileEntity, 16, 82, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 17, 100, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 18, 118, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 19, 136, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 20, 154, 8));
+
+ addSlotToContainer(new Slot(this.mTileEntity, 21, 82, 28));
+ addSlotToContainer(new Slot(this.mTileEntity, 22, 100, 28));
+ addSlotToContainer(new Slot(this.mTileEntity, 23, 118, 28));
+ addSlotToContainer(new Slot(this.mTileEntity, 24, 82, 46));
+ addSlotToContainer(new Slot(this.mTileEntity, 25, 100, 46));
+ addSlotToContainer(new Slot(this.mTileEntity, 26, 118, 46));
+ addSlotToContainer(new Slot(this.mTileEntity, 27, 82, 64));
+ addSlotToContainer(new Slot(this.mTileEntity, 28, 100, 64));
+ addSlotToContainer(new Slot(this.mTileEntity, 29, 118, 64));
+
+ addSlotToContainer(new Slot(this.mTileEntity, 33, 154, 28));
+ addSlotToContainer(new Slot(this.mTileEntity, 34, 154, 64));
+
+ addSlotToContainer(new Slot(this.mTileEntity, 30, 136, 28));
+ addSlotToContainer(new GT_Slot_Holo(this.mTileEntity, 31, 136, 64, false, false, 1));
+ addSlotToContainer(new GT_Slot_Holo(this.mTileEntity, 32, 154, 46, false, false, 1));
+ addSlotToContainer(new GT_Slot_Holo(this.mTileEntity, 32, 136, 46, false, false, 1));
+ }
+
+ @Override
+ public ItemStack slotClick(int aSlotIndex, int aMouseclick, int aShifthold, EntityPlayer aPlayer)
+ {
+ if ((aSlotIndex < 21) || (aSlotIndex > 35)) {
+ return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ }
+ if ((this.mTileEntity == null) || (this.mTileEntity.getMetaTileEntity() == null)) {
+ return null;
+ }
+ try
+ {
+ ItemStack tStack = ((Slot)this.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)this.mTileEntity.getMetaTileEntity()).setBluePrint(null);
+ return null;
+ }
+ }
+ else
+ {
+ if (aSlotIndex == 33)
+ {
+ ItemStack tCraftedStack = ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).getCraftingOutput();
+ if (tCraftedStack != null) {
+ if (aShifthold == 1)
+ {
+ for (byte i = 0; i < aPlayer.inventory.mainInventory.length; i = (byte)(i + 1)) {
+ for (byte j = 0; (j < tCraftedStack.getMaxStackSize() / tCraftedStack.stackSize) && (((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).canDoCraftingOutput()); j = (byte)(j + 1))
+ {
+ ItemStack tStack2;
+ if ((!GT_Utility.areStacksEqual(tStack2 = ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).getCraftingOutput(), tCraftedStack)) || ((tStack != null) && (tStack.stackSize != tStack2.stackSize))) {
+ return aPlayer.inventory.getItemStack();
+ }
+ aPlayer.inventory.mainInventory[i] = ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.mainInventory[i]);
+ }
+ }
+ }
+ else
+ {
+ if (aMouseclick == 0)
+ {
+ if (((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).canDoCraftingOutput()) {
+ aPlayer.inventory.setItemStack(((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.getItemStack()));
+ }
+ return aPlayer.inventory.getItemStack();
+ }
+ for (int i = 0; (i < tCraftedStack.getMaxStackSize() / tCraftedStack.stackSize) && (((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).canDoCraftingOutput()); i++)
+ {
+ ItemStack tStack2;
+ if ((!GT_Utility.areStacksEqual(tStack2 = ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).getCraftingOutput(), tCraftedStack)) || ((tStack != null) && (tStack.stackSize != tStack2.stackSize))) {
+ return aPlayer.inventory.getItemStack();
+ }
+ aPlayer.inventory.setItemStack(((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.getItemStack()));
+ }
+ return aPlayer.inventory.getItemStack();
+ }
+ }
+ return null;
+ }
+ if (aSlotIndex == 34)
+ {
+ ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).mFlushMode = true;
+ return null;
+ }
+ if (aSlotIndex == 35)
+ {
+ ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).sortIntoTheInputSlots();
+ return null;
+ }
+ }
+ }
+ catch (Throwable e)
+ {
+ e.printStackTrace(GT_Log.err);
+ }
+ return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ }
+
+ @Override
+ public int getSlotCount()
+ {
+ return 33;
+ }
+
+ @Override
+ public int getShiftClickSlotCount()
+ {
+ return 21;
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_BronzeWorkbench.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_BronzeWorkbench.java
new file mode 100644
index 0000000000..d093101044
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/CONTAINER_BronzeWorkbench.java
@@ -0,0 +1,161 @@
+package gtPlusPlus.xmod.gregtech.api.gui;
+
+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_Log;
+import gregtech.api.util.GT_Utility;
+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 CONTAINER_BronzeWorkbench
+extends GT_ContainerMetaTile_Machine
+{
+ public CONTAINER_BronzeWorkbench(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity)
+ {
+ super(aInventoryPlayer, aTileEntity);
+ }
+
+ @Override
+ public void addSlots(InventoryPlayer aInventoryPlayer)
+ {
+ addSlotToContainer(new Slot(this.mTileEntity, 0, 8, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 1, 26, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 2, 44, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 3, 62, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 4, 8, 26));
+ addSlotToContainer(new Slot(this.mTileEntity, 5, 26, 26));
+ addSlotToContainer(new Slot(this.mTileEntity, 6, 44, 26));
+ addSlotToContainer(new Slot(this.mTileEntity, 7, 62, 26));
+ addSlotToContainer(new Slot(this.mTileEntity, 8, 8, 44));
+ addSlotToContainer(new Slot(this.mTileEntity, 9, 26, 44));
+ addSlotToContainer(new Slot(this.mTileEntity, 10, 44, 44));
+ addSlotToContainer(new Slot(this.mTileEntity, 11, 62, 44));
+ addSlotToContainer(new Slot(this.mTileEntity, 12, 8, 62));
+ addSlotToContainer(new Slot(this.mTileEntity, 13, 26, 62));
+ addSlotToContainer(new Slot(this.mTileEntity, 14, 44, 62));
+ addSlotToContainer(new Slot(this.mTileEntity, 15, 62, 62));
+
+ addSlotToContainer(new Slot(this.mTileEntity, 16, 82, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 17, 100, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 18, 118, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 19, 136, 8));
+ addSlotToContainer(new Slot(this.mTileEntity, 20, 154, 8));
+
+ addSlotToContainer(new Slot(this.mTileEntity, 21, 82, 28));
+ addSlotToContainer(new Slot(this.mTileEntity, 22, 100, 28));
+ addSlotToContainer(new Slot(this.mTileEntity, 23, 118, 28));
+ addSlotToContainer(new Slot(this.mTileEntity, 24, 82, 46));
+ addSlotToContainer(new Slot(this.mTileEntity, 25, 100, 46));
+ addSlotToContainer(new Slot(this.mTileEntity, 26, 118, 46));
+ addSlotToContainer(new Slot(this.mTileEntity, 27, 82, 64));
+ addSlotToContainer(new Slot(this.mTileEntity, 28, 100, 64));
+ addSlotToContainer(new Slot(this.mTileEntity, 29, 118, 64));
+
+ addSlotToContainer(new Slot(this.mTileEntity, 33, 154, 28));
+ addSlotToContainer(new Slot(this.mTileEntity, 34, 154, 64));
+
+ addSlotToContainer(new Slot(this.mTileEntity, 30, 136, 28));
+ addSlotToContainer(new GT_Slot_Holo(this.mTileEntity, 31, 136, 64, false, false, 1));
+ addSlotToContainer(new GT_Slot_Holo(this.mTileEntity, 32, 154, 46, false, false, 1));
+ addSlotToContainer(new GT_Slot_Holo(this.mTileEntity, 32, 136, 46, false, false, 1));
+ }
+
+ @Override
+ public ItemStack slotClick(int aSlotIndex, int aMouseclick, int aShifthold, EntityPlayer aPlayer)
+ {
+ if ((aSlotIndex < 21) || (aSlotIndex > 35)) {
+ return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ }
+ if ((this.mTileEntity == null) || (this.mTileEntity.getMetaTileEntity() == null)) {
+ return null;
+ }
+ try
+ {
+ ItemStack tStack = ((Slot)this.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)this.mTileEntity.getMetaTileEntity()).setBluePrint(null);
+ return null;
+ }
+ }
+ else
+ {
+ if (aSlotIndex == 33)
+ {
+ ItemStack tCraftedStack = ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).getCraftingOutput();
+ if (tCraftedStack != null) {
+ if (aShifthold == 1)
+ {
+ for (byte i = 0; i < aPlayer.inventory.mainInventory.length; i = (byte)(i + 1)) {
+ for (byte j = 0; (j < tCraftedStack.getMaxStackSize() / tCraftedStack.stackSize) && (((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).canDoCraftingOutput()); j = (byte)(j + 1))
+ {
+ ItemStack tStack2;
+ if ((!GT_Utility.areStacksEqual(tStack2 = ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).getCraftingOutput(), tCraftedStack)) || ((tStack != null) && (tStack.stackSize != tStack2.stackSize))) {
+ return aPlayer.inventory.getItemStack();
+ }
+ aPlayer.inventory.mainInventory[i] = ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.mainInventory[i]);
+ }
+ }
+ }
+ else
+ {
+ if (aMouseclick == 0)
+ {
+ if (((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).canDoCraftingOutput()) {
+ aPlayer.inventory.setItemStack(((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.getItemStack()));
+ }
+ return aPlayer.inventory.getItemStack();
+ }
+ for (int i = 0; (i < tCraftedStack.getMaxStackSize() / tCraftedStack.stackSize) && (((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).canDoCraftingOutput()); i++)
+ {
+ ItemStack tStack2;
+ if ((!GT_Utility.areStacksEqual(tStack2 = ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).getCraftingOutput(), tCraftedStack)) || ((tStack != null) && (tStack.stackSize != tStack2.stackSize))) {
+ return aPlayer.inventory.getItemStack();
+ }
+ aPlayer.inventory.setItemStack(((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).consumeMaterials(aPlayer, aPlayer.inventory.getItemStack()));
+ }
+ return aPlayer.inventory.getItemStack();
+ }
+ }
+ return null;
+ }
+ if (aSlotIndex == 34)
+ {
+ ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).mFlushMode = true;
+ return null;
+ }
+ if (aSlotIndex == 35)
+ {
+ ((GT_MetaTileEntity_AdvancedCraftingTable)this.mTileEntity.getMetaTileEntity()).sortIntoTheInputSlots();
+ return null;
+ }
+ }
+ }
+ catch (Throwable e)
+ {
+ e.printStackTrace(GT_Log.err);
+ }
+ return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ }
+
+ @Override
+ public int getSlotCount()
+ {
+ return 33;
+ }
+
+ @Override
+ public int getShiftClickSlotCount()
+ {
+ return 21;
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_AdvancedWorkbench.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_AdvancedWorkbench.java
new file mode 100644
index 0000000000..7da9238bd5
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_AdvancedWorkbench.java
@@ -0,0 +1,30 @@
+package gtPlusPlus.xmod.gregtech.api.gui;
+
+import gregtech.api.gui.GT_GUIContainerMetaTile_Machine;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gtPlusPlus.core.lib.CORE;
+import net.minecraft.entity.player.InventoryPlayer;
+
+public class GUI_AdvancedWorkbench
+extends GT_GUIContainerMetaTile_Machine
+{
+ public GUI_AdvancedWorkbench(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity)
+ {
+ super(new CONTAINER_AdvancedWorkbench(aInventoryPlayer, aTileEntity), CORE.RES_PATH_GUI + "AdvancedCraftingTable.png");
+ }
+
+ @Override
+ protected void drawGuiContainerForegroundLayer(int par1, int par2)
+ {
+ //this.fontRendererObj.drawString("Condenser", 8, 4, 4210752);
+ }
+
+ @Override
+ protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
+ {
+ super.drawGuiContainerBackgroundLayer(par1, par2, par3);
+ int x = (this.width - this.xSize) / 2;
+ int y = (this.height - this.ySize) / 2;
+ drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize);
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_BronzeWorkbench.java b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_BronzeWorkbench.java
new file mode 100644
index 0000000000..597edba503
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/api/gui/GUI_BronzeWorkbench.java
@@ -0,0 +1,30 @@
+package gtPlusPlus.xmod.gregtech.api.gui;
+
+import gregtech.api.gui.GT_GUIContainerMetaTile_Machine;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gtPlusPlus.core.lib.CORE;
+import net.minecraft.entity.player.InventoryPlayer;
+
+public class GUI_BronzeWorkbench
+extends GT_GUIContainerMetaTile_Machine
+{
+ public GUI_BronzeWorkbench(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity)
+ {
+ super(new CONTAINER_BronzeWorkbench(aInventoryPlayer, aTileEntity), CORE.RES_PATH_GUI + "BronzeCraftingTable.png");
+ }
+
+ @Override
+ protected void drawGuiContainerForegroundLayer(int par1, int par2)
+ {
+ //this.fontRendererObj.drawString("Condenser", 8, 4, 4210752);
+ }
+
+ @Override
+ protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
+ {
+ super.drawGuiContainerBackgroundLayer(par1, par2, par3);
+ int x = (this.width - this.xSize) / 2;
+ int y = (this.height - this.ySize) / 2;
+ drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize);
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_AdvancedCraftingTable.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_AdvancedCraftingTable.java
new file mode 100644
index 0000000000..b150ea32cb
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_AdvancedCraftingTable.java
@@ -0,0 +1,555 @@
+package gtPlusPlus.xmod.gregtech.common.tileentities.storage;
+
+import gregtech.api.enums.GT_Values;
+import gregtech.api.enums.Textures;
+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.core.util.Utils;
+import gtPlusPlus.xmod.gregtech.api.gui.CONTAINER_AdvancedWorkbench;
+import gtPlusPlus.xmod.gregtech.api.gui.GUI_AdvancedWorkbench;
+
+import java.util.ArrayList;
+
+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;
+import net.minecraftforge.fluids.FluidStack;
+
+public class GT_MetaTileEntity_AdvancedCraftingTable
+extends GT_MetaTileEntity_BasicTank
+{
+ public boolean mFlushMode = false;
+
+ public GT_MetaTileEntity_AdvancedCraftingTable(int aID, String aName, String aNameRegional, int aTier) {
+ super(aID, aName, aNameRegional, aTier, 3, "WorkBench pro noSc0pe");
+ }
+
+ public GT_MetaTileEntity_AdvancedCraftingTable(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
+ super(aName, aTier, 3, aDescription, aTextures);
+ }
+
+ @Override
+ public boolean onRightclick(IGregTechTileEntity aBaseMetaTileEntity, EntityPlayer aPlayer) {
+ Utils.LOG_INFO("Right Click on Block");
+ if (aBaseMetaTileEntity.isClientSide()){
+ Utils.LOG_INFO("MTE is ClientSide");
+ return true;
+ }
+ Utils.LOG_INFO("MTE is not ClientSide");
+ aBaseMetaTileEntity.openGUI(aPlayer);
+ Utils.LOG_INFO("MTE is now has an open GUI");
+ return true;
+ }
+
+ @Override
+ public String[] getInfoData() {
+
+ if (mFluid == null) {
+ return new String[]{
+ GT_Values.VOLTAGE_NAMES[mTier]+" Workbench",
+ "Stored Fluid:",
+ "No Fluid",
+ Integer.toString(0) + "L",
+ Integer.toString(getCapacity()) + "L"};
+ }
+ return new String[]{
+ GT_Values.VOLTAGE_NAMES[mTier]+" Workbench",
+ "Stored Fluid:",
+ mFluid.getLocalizedName(),
+ Integer.toString(mFluid.amount) + "L",
+ Integer.toString(getCapacity()) + "L"};
+ }
+
+ @Override
+ public boolean isGivingInformation() {
+ return true;
+ }
+
+ @Override
+ public void saveNBTData(NBTTagCompound aNBT) {
+ super.saveNBTData(aNBT);
+ Utils.LOG_INFO("Dumping Fluid data. Name: "+mFluid.getFluid().getName()+" Amount: "+mFluid.amount+"L");
+ if (mFluid != null) aNBT.setTag("mFluid", mFluid.writeToNBT(new NBTTagCompound()));
+ }
+
+ @Override
+ public void loadNBTData(NBTTagCompound aNBT) {
+ super.loadNBTData(aNBT);
+ mFluid = FluidStack.loadFluidStackFromNBT(aNBT.getCompoundTag("mFluid"));
+ }
+
+ @Override
+ public boolean isTransformerUpgradable()
+ {
+ return true;
+ }
+
+ public boolean isBatteryUpgradable()
+ {
+ 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 true;
+ }
+
+ @Override
+ public boolean isInputFacing(byte aSide)
+ {
+ return true;
+ }
+
+ @Override
+ public long maxEUInput()
+ {
+ return 128;
+ }
+
+ @Override
+ public long maxEUStore()
+ {
+ return 128000;
+ }
+
+ public int getInvSize()
+ {
+ return 35;
+ }
+
+ @Override
+ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity)
+ {
+ return new GT_MetaTileEntity_AdvancedCraftingTable(mName, mTier, mDescription, mTextures);
+ }
+
+ public void onRightclick(EntityPlayer aPlayer)
+ {
+ getBaseMetaTileEntity().openGUI(aPlayer, 160);
+ }
+
+ public void onFirstTick()
+ {
+ getCraftingOutput();
+ }
+
+ @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 onPostTick()
+ {
+ if (getBaseMetaTileEntity().isServerSide())
+ {
+ if (getBaseMetaTileEntity().hasInventoryBeenModified()) {
+ getCraftingOutput();
+ }
+ fillLiquidContainers();
+ if (this.mFlushMode)
+ {
+ this.mFlushMode = false;
+ for (byte i = 21; i < 30; i = (byte)(i + 1)) {
+ if (this.mInventory[i] != null) {
+ if (this.mInventory[i].stackSize == 0)
+ {
+ this.mInventory[i] = null;
+ }
+ else
+ {
+ this.mFlushMode = true;
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public void sortIntoTheInputSlots()
+ {
+ for (byte i = 21; i < 30; i = (byte)(i + 1)) {
+ if (this.mInventory[i] != null)
+ {
+ if (this.mInventory[i].stackSize == 0) {
+ this.mInventory[i] = null;
+ }
+ if (this.mInventory[i] != null) {
+ for (byte j = 0; j < 16; j = (byte)(j + 1)) {
+ if (GT_Utility.areStacksEqual(this.mInventory[i], this.mInventory[j])) {
+ GT_Utility.moveStackFromSlotAToSlotB(getBaseMetaTileEntity(), getBaseMetaTileEntity(), i, j, (byte)64, (byte)1, (byte)64, (byte)1);
+ }
+ }
+ }
+ if (this.mInventory[i] != null) {
+ for (byte j = 0; j < 16; j = (byte)(j + 1)) {
+ if (this.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) && (this.mFluid != null); i = (byte)(i + 1))
+ {
+ ItemStack tOutput = GT_Utility.fillFluidContainer(this.mFluid, this.mInventory[i], true, true);
+ if (tOutput != null)
+ {
+ if (this.mInventory[i].stackSize == 1)
+ {
+ this.mFluid.amount -= GT_Utility.getFluidForFilledItem(tOutput, true).amount * tOutput.stackSize;
+ this.mInventory[i] = tOutput;
+ }
+ else
+ {
+ for (byte j = 16; j < 21; j = (byte)(j + 1)) {
+ if ((this.mInventory[j] == null) || ((GT_Utility.areStacksEqual(tOutput, this.mInventory[j])) && (this.mInventory[j].stackSize + tOutput.stackSize <= tOutput.getMaxStackSize())))
+ {
+ this.mFluid.amount -= GT_Utility.getFluidForFilledItem(tOutput, true).amount * tOutput.stackSize;
+ getBaseMetaTileEntity().decrStackSize(i, 1);
+ if (this.mInventory[j] == null)
+ {
+ this.mInventory[j] = tOutput; break;
+ }
+ this.mInventory[j].stackSize += 1;
+
+ break;
+ }
+ }
+ }
+ if ((this.mFluid != null) && (this.mFluid.amount <= 0)) {
+ this.mFluid = null;
+ }
+ }
+ }
+ if ((this.mFluid != null) && (this.mFluid.amount <= 0)) {
+ this.mFluid = null;
+ }
+ }
+
+ public void setBluePrint(ItemStack aStack)
+ {
+ if (aStack == null) {
+ aStack = this.mInventory[30];
+ }
+ if ((this.mInventory[31] == null) || (aStack == null) /*|| (aStack.itemID != -2)*/ || (aStack.getItemDamage() != 0) || (aStack.stackSize != 1) || (aStack.hasTagCompound())) {
+ return;
+ }
+ NBTTagCompound tNBT = new NBTTagCompound();
+ NBTTagList tNBT_ItemList = new NBTTagList();
+ for (int i = 0; i < 9; i++)
+ {
+ ItemStack tStack = this.mInventory[(i + 21)];
+ if (tStack != null)
+ {
+ NBTTagCompound tag = new NBTTagCompound();
+ tag.setByte("Slot", (byte)i);
+ tStack.writeToNBT(tag);
+ tNBT_ItemList.appendTag(tag);
+ }
+ }
+ tNBT.setTag("Inventory", tNBT_ItemList);
+ aStack.setTagCompound(tNBT);
+ }
+
+ public ItemStack getCraftingOutput()
+ {
+ if ((this.mInventory[30] != null) /*&& (this.mInventory[30].itemID == -2)*/ && (this.mInventory[30].getItemDamage() == 0) && (this.mInventory[30].hasTagCompound()))
+ {
+ NBTTagCompound tNBT = this.mInventory[30].getTagCompound();
+ NBTTagList tNBT_ItemList = tNBT.getTagList("Blueprint", 10); //TODO
+ for (int i = 0; (i < tNBT_ItemList.tagCount()) && (i < 9); i++)
+ {
+ NBTTagCompound tag = (NBTTagCompound)tNBT_ItemList.getCompoundTagAt(i);
+ byte slot = tag.getByte("Slot");
+ if ((slot >= 0) && (slot < 9) && (this.mInventory[(slot + 21)] == null))
+ {
+ this.mInventory[(slot + 21)] = GT_Utility.loadItem(tag);
+ if (this.mInventory[(slot + 21)] != null) {
+ this.mInventory[(slot + 21)].stackSize = 0;
+ }
+ }
+ }
+ }
+ this.mInventory[31] = GT_ModHandler.getAllRecipeOutput(getBaseMetaTileEntity().getWorld(), new ItemStack[] { this.mInventory[21], this.mInventory[22], this.mInventory[23], this.mInventory[24], this.mInventory[25], this.mInventory[26], this.mInventory[27], this.mInventory[28], this.mInventory[29] });
+ return this.mInventory[31];
+ }
+
+ public boolean canDoCraftingOutput()
+ {
+ if (this.mInventory[31] == null) {
+ return false;
+ }
+ for (ItemStack tStack : recipeContent()) {
+ if (tStack.stackSize > getAmountOf(tStack)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private int getAmountOf(ItemStack aStack)
+ {
+ int tAmount = 0;
+ for (byte i = 0; (i < 30) && (tAmount < 9); i = (byte)(i + 1)) {
+ if (GT_Utility.areStacksOrToolsEqual(aStack, this.mInventory[i])) {
+ tAmount += this.mInventory[i].stackSize;
+ }
+ }
+ return tAmount;
+ }
+
+ private ArrayList<ItemStack> recipeContent()
+ {
+ ArrayList<ItemStack> tList = new ArrayList();
+ for (byte i = 21; i < 30; i = (byte)(i + 1)) {
+ if (this.mInventory[i] != null)
+ {
+ boolean temp = false;
+ for (byte j = 0; j < tList.size(); j = (byte)(j + 1)) {
+ if (GT_Utility.areStacksOrToolsEqual(this.mInventory[i], (ItemStack)tList.get(j)))
+ {
+ ((ItemStack)tList.get(j)).stackSize += 1;
+ temp = true;
+ break;
+ }
+ }
+ if (!temp) {
+ tList.add(GT_Utility.copyAmount(1L, new Object[] { this.mInventory[i] }));
+ }
+ }
+ }
+ return tList;
+ }
+
+ public ItemStack consumeMaterials(EntityPlayer aPlayer, ItemStack aHoldStack)
+ {
+ if (this.mInventory[31] == null) {
+ return aHoldStack;
+ }
+ if (aHoldStack != null)
+ {
+ if (!GT_Utility.areStacksEqual(aHoldStack, this.mInventory[31])) {
+ return aHoldStack;
+ }
+ if (aHoldStack.stackSize + this.mInventory[31].stackSize > aHoldStack.getMaxStackSize()) {
+ return aHoldStack;
+ }
+ }
+ for (byte i = 21; i < 30; i = (byte)(i + 1)) {
+ if (this.mInventory[i] != null) {
+ for (byte j = 0; j <= i; j = (byte)(j + 1)) {
+ if (((j < 21) || (j == i)) &&
+ (GT_Utility.areStacksOrToolsEqual(this.mInventory[i], this.mInventory[j])) && (this.mInventory[j].stackSize > 0))
+ {
+ ItemStack tStack = GT_Utility.getContainerItem(this.mInventory[j], true);
+ if ((tStack == null) || ((tStack.isItemStackDamageable()) && (tStack.getItemDamage() >= tStack.getMaxDamage())))
+ {
+ getBaseMetaTileEntity().decrStackSize(j, 1); break;
+ }
+ if (this.mInventory[j].stackSize == 1)
+ {
+ this.mInventory[j] = tStack; break;
+ }
+ getBaseMetaTileEntity().decrStackSize(j, 1);
+ for (byte k = 0; k < 21; k = (byte)(k + 1))
+ {
+ if (this.mInventory[k] == null)
+ {
+ this.mInventory[k] = tStack;
+ break;
+ }
+ if ((GT_Utility.areStacksEqual(tStack, this.mInventory[k])) &&
+ (tStack.stackSize + this.mInventory[k].stackSize <= this.mInventory[k].getMaxStackSize()))
+ {
+ this.mInventory[k].stackSize += tStack.stackSize;
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+ if (aHoldStack == null)
+ {
+ aHoldStack = GT_Utility.copy(new Object[] { this.mInventory[31] });
+ aHoldStack.onCrafting(getBaseMetaTileEntity().getWorld(), aPlayer, this.mInventory[31].stackSize);
+ }
+ else
+ {
+ aHoldStack.stackSize += this.mInventory[31].stackSize;
+ aHoldStack.onCrafting(getBaseMetaTileEntity().getWorld(), aPlayer, this.mInventory[31].stackSize);
+ }
+ fillLiquidContainers();
+
+ return aHoldStack;
+ }
+
+ @Override
+ public long getInputTier()
+ {
+ return GT_Utility.getTier(getBaseMetaTileEntity().getInputVoltage());
+ }
+
+ @Override
+ public long getOutputTier()
+ {
+ return GT_Utility.getTier(getBaseMetaTileEntity().getInputVoltage());
+ }
+
+ @Override
+ public int rechargerSlotStartIndex()
+ {
+ return 16;
+ }
+
+ @Override
+ public int rechargerSlotCount()
+ {
+ return 5;
+ }
+
+ public int getTextureIndex(byte aSide, byte aFacing, boolean aActive, boolean aRedstone)
+ {
+ if (aSide == 0) {
+ return 32;
+ }
+ if (aSide == 1) {
+ return 290;
+ }
+ if ((aFacing == 0) || (aFacing == 1)) {
+ return 222;
+ }
+ if ((aFacing == 2) || (aFacing == 3)) {
+ return 223;
+ }
+ return 215;
+ }
+
+ @Override
+ public String[] getDescription()
+ {
+ return new String[]{"For the very large Projects"};
+ }
+
+ public boolean allowPutStack(int aIndex, byte aSide, ItemStack aStack)
+ {
+ if (aIndex < 16)
+ {
+ for (byte i = 0; i < 16; i = (byte)(i + 1)) {
+ if (GT_Utility.areStacksOrToolsEqual(aStack, this.mInventory[i])) {
+ return aIndex == i;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ public boolean allowPullStack(int aIndex, byte aSide, ItemStack aStack)
+ {
+ return (aIndex == 33) || ((this.mFlushMode) && (aIndex >= 21) && (aIndex < 30));
+ }
+
+ @Override
+ public int getCapacity()
+ {
+ return 64000;
+ }
+
+ @Override
+ public int getTankPressure()
+ {
+ return -100;
+ }
+
+ @Override
+ public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity)
+ {
+ return new CONTAINER_AdvancedWorkbench(aPlayerInventory, aBaseMetaTileEntity);
+ }
+
+ @Override
+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity)
+ {
+ return new GUI_AdvancedWorkbench(aPlayerInventory, aBaseMetaTileEntity);
+ }
+
+ @Override
+ public ITexture[][][] getTextureSet(ITexture[] aTextures) {
+ return new ITexture[0][0][0];
+ }
+
+ @Override
+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
+ return aSide == 1 ? new ITexture[]{ new GT_RenderedTexture(Textures.BlockIcons.MACHINE_CASING_SOLID_STEEL), new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_CRAFTING)} : new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEEL_SIDE), new GT_RenderedTexture(Textures.BlockIcons.VOID)};
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_BronzeCraftingTable.java b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_BronzeCraftingTable.java
new file mode 100644
index 0000000000..d0f15c5da2
--- /dev/null
+++ b/src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/storage/GT_MetaTileEntity_BronzeCraftingTable.java
@@ -0,0 +1,160 @@
+package gtPlusPlus.xmod.gregtech.common.tileentities.storage;
+
+import gregtech.api.GregTech_API;
+import gregtech.api.enums.Textures;
+import gregtech.api.interfaces.ITexture;
+import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
+import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.objects.GT_RenderedTexture;
+import gtPlusPlus.xmod.gregtech.api.gui.CONTAINER_BronzeWorkbench;
+import gtPlusPlus.xmod.gregtech.api.gui.GUI_BronzeWorkbench;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+
+public class GT_MetaTileEntity_BronzeCraftingTable
+extends GT_MetaTileEntity_AdvancedCraftingTable
+{
+ public GT_MetaTileEntity_BronzeCraftingTable(int aID, String aName, String aNameRegional, int aTier)
+ {
+ super(aID, aName, aNameRegional, aTier);
+ }
+
+ public GT_MetaTileEntity_BronzeCraftingTable(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
+ super(aName, aTier, aDescription, aTextures);
+ }
+ @Override
+ public boolean isElectric()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isPneumatic()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isSteampowered()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isTransformerUpgradable()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isBatteryUpgradable()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isEnetInput()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isInputFacing(byte aSide)
+ {
+ return false;
+ }
+
+ @Override
+ public long maxEUInput()
+ {
+ return 0;
+ }
+
+ @Override
+ public long maxEUStore()
+ {
+ return 0;
+ }
+
+ @Override
+ public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity)
+ {
+ return new GT_MetaTileEntity_BronzeCraftingTable(mName, mTier, mDescription, mTextures);
+ }
+
+ @Override
+ public void onRightclick(EntityPlayer aPlayer)
+ {
+ getBaseMetaTileEntity().openGUI(aPlayer, 161);
+ }
+
+ @SuppressWarnings({ "static-method", "unused" })
+ public boolean allowCoverOnSide(byte aSide, int aCoverID)
+ {
+ return GregTech_API.getCoverBehavior(aCoverID).isSimpleCover();
+ }
+
+ @Override
+ public int rechargerSlotStartIndex()
+ {
+ return 0;
+ }
+
+ @Override
+ public int rechargerSlotCount()
+ {
+ return 0;
+ }
+
+ @Override
+ public int getTextureIndex(byte aSide, byte aFacing, boolean aActive, boolean aRedstone)
+ {
+ if (aSide == 0) {
+ return 315;
+ }
+ if (aSide == 1) {
+ return 317;
+ }
+ if ((aFacing == 0) || (aFacing == 1)) {
+ return 318;
+ }
+ if ((aFacing == 2) || (aFacing == 3)) {
+ return 319;
+ }
+ return 320;
+ }
+
+ @Override
+ public String[] getDescription()
+ {
+ return new String[] {"For the smaller Projects"};
+ }
+
+ @Override
+ public int getCapacity()
+ {
+ return 16000;
+ }
+
+ @Override
+ public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity)
+ {
+ return new CONTAINER_BronzeWorkbench(aPlayerInventory, aBaseMetaTileEntity);
+ }
+
+ @Override
+ public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity)
+ {
+ return new GUI_BronzeWorkbench(aPlayerInventory, aBaseMetaTileEntity);
+ }
+
+ @Override
+ public ITexture[][][] getTextureSet(ITexture[] aTextures) {
+ return new ITexture[0][0][0];
+ }
+
+ @Override
+ public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) {
+ return aSide == 1 ? new ITexture[]{ new GT_RenderedTexture(Textures.BlockIcons.MACHINE_BRONZEPLATEDBRICKS), new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_CRAFTING)} : new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_BRONZE_SIDE), new GT_RenderedTexture(Textures.BlockIcons.VOID)};
+ }
+}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java
index 35fc715a6f..6d84abe37b 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/loaders/RecipeGen_Plates.java
@@ -1,8 +1,10 @@
package gtPlusPlus.xmod.gregtech.loaders;
+import gregtech.api.GregTech_API;
import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
import gregtech.api.util.GT_ModHandler;
+import gregtech.api.util.GT_Recipe;
import gtPlusPlus.core.material.Material;
import gtPlusPlus.core.util.Utils;
import net.minecraft.item.ItemStack;
@@ -20,47 +22,79 @@ public class RecipeGen_Plates {
ItemStack plate_SingleTwo = material.getPlate(2);
ItemStack plate_Double = material.getPlateDouble(1);
+ Utils.LOG_INFO("Generating Plate recipes for "+material.getLocalizedName());
+
//Forge Hammer
- GT_Values.RA.addForgeHammerRecipe(
+ if (addForgeHammerRecipe(
ingotStackTwo,
plate_Single,
(int) Math.max(material.getMass(), 1L),
- 16);
+ 16)){
+ Utils.LOG_INFO("Forge Hammer Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Utils.LOG_INFO("Forge Hammer Recipe: "+material.getLocalizedName()+" - Failed");
+ }
//Bender
- GT_Values.RA.addBenderRecipe(
+ if (addBenderRecipe(
ingotStackOne,
plate_Single,
(int) Math.max(material.getMass() * 1L, 1L),
- 24);
+ 24)){
+ Utils.LOG_INFO("Bender Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Utils.LOG_INFO("Bender Recipe: "+material.getLocalizedName()+" - Failed");
+ }
//Extruder
- GT_Values.RA.addExtruderRecipe(
+ if (addExtruderRecipe(
ingotStackOne,
shape_Extruder,
plate_Single,
- 10, 4 * tVoltageMultiplier);
+ 10, 4 * tVoltageMultiplier)){
+ Utils.LOG_INFO("Extruder Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Utils.LOG_INFO("Extruder Recipe: "+material.getLocalizedName()+" - Failed");
+ }
//Alloy Smelter
- GT_Values.RA.addAlloySmelterRecipe(
+ if (GT_Values.RA.addAlloySmelterRecipe(
ingotStackTwo,
shape_Mold,
plate_Single,
(int) Math.max(material.getMass() * 2L, 1L),
- 2 * tVoltageMultiplier);
+ 2 * tVoltageMultiplier)){
+ Utils.LOG_INFO("Alloy Smelter Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Utils.LOG_INFO("Alloy Smelter Recipe: "+material.getLocalizedName()+" - Failed");
+ }
//Making Double Plates
- GT_Values.RA.addBenderRecipe(
+ if (addBenderRecipe(
ingotStackTwo,
plate_Double,
(int) Math.max(material.getMass() * 2L, 1L),
- 96);
- GT_Values.RA.addBenderRecipe(
+ 96)){
+ Utils.LOG_INFO("Bender Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Utils.LOG_INFO("Bender Recipe: "+material.getLocalizedName()+" - Failed");
+ }
+ if (addBenderRecipe(
plate_SingleTwo,
plate_Double,
(int) Math.max(material.getMass() * 2L, 1L),
- 96);
+ 96)){
+ Utils.LOG_INFO("Bender Recipe: "+material.getLocalizedName()+" - Success");
+ }
+ else {
+ Utils.LOG_INFO("Bender Recipe: "+material.getLocalizedName()+" - Failed");
+ }
- Utils.LOG_WARNING("Adding crafting recipes for "+material.getLocalizedName()+" Plates - Single & Double");
+ Utils.LOG_INFO("Adding crafting recipes for "+material.getLocalizedName()+" Plates - Single & Double");
//Single Plate Shaped/Shapeless
GT_ModHandler.addCraftingRecipe(
@@ -94,6 +128,39 @@ public class RecipeGen_Plates {
plate_Single});
}
+ public static boolean addBenderRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt) {
+ if ((aInput1 == null) || (aOutput1 == null)) {
+ return false;
+ }
+ if ((aDuration = GregTech_API.sRecipeFile.get("bender", aInput1, aDuration)) <= 0) {
+ return false;
+ }
+ new GT_Recipe(aEUt, aDuration, aInput1, aOutput1);
+ return true;
+ }
+
+ public static boolean addExtruderRecipe(ItemStack aInput, ItemStack aShape, ItemStack aOutput, int aDuration, int aEUt) {
+ if ((aInput == null) || (aShape == null) || (aOutput == null)) {
+ return false;
+ }
+ if ((aDuration = GregTech_API.sRecipeFile.get("extruder", aOutput, aDuration)) <= 0) {
+ return false;
+ }
+ GT_Recipe.GT_Recipe_Map.sExtruderRecipes.addRecipe(true, new ItemStack[]{aInput, aShape}, new ItemStack[]{aOutput}, null, null, null, aDuration, aEUt, 0);
+ return true;
+ }
+
+ public static boolean addForgeHammerRecipe(ItemStack aInput1, ItemStack aOutput1, int aDuration, int aEUt) {
+ if ((aInput1 == null) || (aOutput1 == null)) {
+ return false;
+ }
+ if (!GregTech_API.sRecipeFile.get("forgehammer", aOutput1, true)) {
+ return false;
+ }
+ GT_Recipe.GT_Recipe_Map.sHammerRecipes.addRecipe(true, new ItemStack[]{aInput1}, new ItemStack[]{aOutput1}, null, null, null, aDuration, aEUt, 0);
+ return true;
+ }
+
}
diff --git a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredFluidTanks.java b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredFluidTanks.java
index e1af53a627..1475a8140a 100644
--- a/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredFluidTanks.java
+++ b/src/Java/gtPlusPlus/xmod/gregtech/registration/gregtech/GregtechTieredFluidTanks.java
@@ -3,6 +3,8 @@ package gtPlusPlus.xmod.gregtech.registration.gregtech;
import gtPlusPlus.core.lib.LoadedMods;
import gtPlusPlus.core.util.Utils;
import gtPlusPlus.xmod.gregtech.api.enums.GregtechItemList;
+import gtPlusPlus.xmod.gregtech.common.tileentities.storage.GT_MetaTileEntity_AdvancedCraftingTable;
+import gtPlusPlus.xmod.gregtech.common.tileentities.storage.GT_MetaTileEntity_BronzeCraftingTable;
import gtPlusPlus.xmod.gregtech.common.tileentities.storage.GT_MetaTileEntity_TieredTank;
import gtPlusPlus.xmod.gregtech.common.tileentities.storage.GT_NBT_Tank;
@@ -31,8 +33,11 @@ public class GregtechTieredFluidTanks
GregtechItemList.GT_FluidTank_ZPM.set(new GT_MetaTileEntity_TieredTank(ID++, "fluidtank.tier.07", "ZPM Voltage Fluid Tank", 7).getStackForm(1L));
GregtechItemList.GT_FluidTank_UV.set(new GT_MetaTileEntity_TieredTank(ID++, "fluidtank.tier.08", "Ultimate Voltage Fluid Tank", 8).getStackForm(1L));
GregtechItemList.GT_FluidTank_MAX.set(new GT_MetaTileEntity_TieredTank(ID++, "fluidtank.tier.09", "MAX Voltage Fluid Tank", 9).getStackForm(1L));
-
-
+ ID = 900;
+ GregtechItemList.GT4_Workbench_Bronze.set(new GT_MetaTileEntity_BronzeCraftingTable(ID++, "workbench.bronze", "Bronze Workbench", 0).getStackForm(1L));
+ GregtechItemList.GT4_Workbench_Advanced.set(new GT_MetaTileEntity_AdvancedCraftingTable(ID++, "workbench.advanced", "Advanced Workbench", 1).getStackForm(1L));
+
+
}
private static void run2()
diff --git a/src/resources/assets/miscutils/textures/gui/AdvancedCraftingTable.png b/src/resources/assets/miscutils/textures/gui/AdvancedCraftingTable.png
new file mode 100644
index 0000000000..3d5cc1591e
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/gui/AdvancedCraftingTable.png
Binary files differ
diff --git a/src/resources/assets/miscutils/textures/gui/BronzeCraftingTable.png b/src/resources/assets/miscutils/textures/gui/BronzeCraftingTable.png
new file mode 100644
index 0000000000..fa432b2805
--- /dev/null
+++ b/src/resources/assets/miscutils/textures/gui/BronzeCraftingTable.png
Binary files differ