aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gregtech/api/gui')
-rw-r--r--src/main/java/gregtech/api/gui/GT_ContainerMetaTile_Machine.java65
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_1by1.java1
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_2by2.java1
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_3by3.java1
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_4by4.java1
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java47
-rw-r--r--src/main/java/gregtech/api/gui/GT_GUIContainerMetaTile_Machine.java63
-rw-r--r--src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java36
8 files changed, 131 insertions, 84 deletions
diff --git a/src/main/java/gregtech/api/gui/GT_ContainerMetaTile_Machine.java b/src/main/java/gregtech/api/gui/GT_ContainerMetaTile_Machine.java
index c0c2863521..97ee1d85a3 100644
--- a/src/main/java/gregtech/api/gui/GT_ContainerMetaTile_Machine.java
+++ b/src/main/java/gregtech/api/gui/GT_ContainerMetaTile_Machine.java
@@ -1,12 +1,17 @@
package gregtech.api.gui;
+import java.util.List;
+
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import gregtech.api.interfaces.metatileentity.IConfigurationCircuitSupport;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.util.GT_Utility;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ICrafting;
+import net.minecraft.item.ItemStack;
/**
* NEVER INCLUDE THIS FILE IN YOUR MOD!!!
@@ -42,6 +47,7 @@ public class GT_ContainerMetaTile_Machine extends GT_Container {
private long oEnergyLong = 0,
oStorageLong = 0;
protected int mTimer = 0;
+ protected Runnable circuitSlotClickCallback;
public GT_ContainerMetaTile_Machine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) {
@@ -72,6 +78,19 @@ public class GT_ContainerMetaTile_Machine extends GT_Container {
aInventoryPlayer.player.openContainer = aInventoryPlayer.player.inventoryContainer;
}
}
+ protected void addCircuitSlot() {
+ if (mTileEntity.getMetaTileEntity() instanceof IConfigurationCircuitSupport) {
+ IConfigurationCircuitSupport ccs = (IConfigurationCircuitSupport)mTileEntity.getMetaTileEntity();
+ GT_Slot_Render slotCircuit = new GT_Slot_Render(mTileEntity, ccs.getCircuitSlot(), ccs.getCircuitSlotX(), ccs.getCircuitSlotY());
+ addSlotToContainer(slotCircuit);
+ slotCircuit.setEnabled(ccs.allowSelectCircuit());
+ }
+ }
+
+ @Override
+ public void addSlots(InventoryPlayer aInventoryPlayer) {
+ addCircuitSlot();
+ }
@Override
public void detectAndSendChanges() {
@@ -149,7 +168,9 @@ public class GT_ContainerMetaTile_Machine extends GT_Container {
oActive = mActive;
oOutput = mOutput;
oEnergy = mEnergy;
+ oEnergyLong = mEnergyLong;
oStorage = mStorage;
+ oStorageLong = mStorageLong;
oSteamStorage = mSteamStorage;
oProgressTime = mProgressTime;
oMaxProgressTime = mMaxProgressTime;
@@ -236,4 +257,48 @@ public class GT_ContainerMetaTile_Machine extends GT_Container {
public String trans(String aKey, String aEnglish) {
return GT_Utility.trans(aKey, aEnglish);
}
+
+ public void setCircuitSlotClickCallback(Runnable circuitSlotClickCallback) {
+ this.circuitSlotClickCallback = circuitSlotClickCallback;
+ }
+ @Override
+ public ItemStack slotClick(int aSlotNumber, int aMouseclick, int aShifthold, EntityPlayer aPlayer) {
+ if (mTileEntity.getMetaTileEntity() instanceof IConfigurationCircuitSupport) {
+ IMetaTileEntity machine = mTileEntity.getMetaTileEntity();
+ IConfigurationCircuitSupport ccs = (IConfigurationCircuitSupport)machine;
+ if (ccs.allowSelectCircuit() && aSlotNumber == ccs.getCircuitGUISlot() && aMouseclick < 2) {
+ ItemStack newCircuit;
+ if (aShifthold == 1) {
+ if (aMouseclick == 0) {
+ if (circuitSlotClickCallback != null)
+ circuitSlotClickCallback.run();
+ return null;
+ } else {
+ // clear
+ newCircuit = null;
+ }
+ } else {
+ ItemStack cursorStack = aPlayer.inventory.getItemStack();
+ List<ItemStack> tCircuits = ccs.getConfigurationCircuits();
+ int index = GT_Utility.findMatchingStackInList(tCircuits, cursorStack);
+ if (index < 0) {
+ int curIndex = GT_Utility.findMatchingStackInList(tCircuits, machine.getStackInSlot(ccs.getCircuitSlot())) + 1;
+ if (aMouseclick == 0) {
+ curIndex += 1;
+ } else {
+ curIndex -= 1;
+ }
+ curIndex = Math.floorMod(curIndex, tCircuits.size() + 1) - 1;
+ newCircuit = curIndex < 0 ? null : tCircuits.get(curIndex);
+ } else {
+ // set to whatever it is
+ newCircuit = tCircuits.get(index);
+ }
+ }
+ mTileEntity.setInventorySlotContents(ccs.getCircuitSlot(), newCircuit);
+ return newCircuit;
+ }
+ }
+ return super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer);
+ }
}
diff --git a/src/main/java/gregtech/api/gui/GT_Container_1by1.java b/src/main/java/gregtech/api/gui/GT_Container_1by1.java
index aafa4d9bc9..3c65c5e590 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_1by1.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_1by1.java
@@ -13,6 +13,7 @@ public class GT_Container_1by1 extends GT_ContainerMetaTile_Machine {
@Override
public void addSlots(InventoryPlayer aInventoryPlayer) {
addSlotToContainer(new Slot(mTileEntity, 0, 80, 35));
+ super.addSlots(aInventoryPlayer);
}
@Override
diff --git a/src/main/java/gregtech/api/gui/GT_Container_2by2.java b/src/main/java/gregtech/api/gui/GT_Container_2by2.java
index 089c20e335..92d50b3aae 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_2by2.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_2by2.java
@@ -16,6 +16,7 @@ public class GT_Container_2by2 extends GT_ContainerMetaTile_Machine {
addSlotToContainer(new Slot(mTileEntity, 1, 89, 26));
addSlotToContainer(new Slot(mTileEntity, 2, 71, 44));
addSlotToContainer(new Slot(mTileEntity, 3, 89, 44));
+ super.addSlots(aInventoryPlayer);
}
@Override
diff --git a/src/main/java/gregtech/api/gui/GT_Container_3by3.java b/src/main/java/gregtech/api/gui/GT_Container_3by3.java
index aa44556ff5..282d740347 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_3by3.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_3by3.java
@@ -21,6 +21,7 @@ public class GT_Container_3by3 extends GT_ContainerMetaTile_Machine {
addSlotToContainer(new Slot(mTileEntity, 6, 62, 53));
addSlotToContainer(new Slot(mTileEntity, 7, 80, 53));
addSlotToContainer(new Slot(mTileEntity, 8, 98, 53));
+ super.addSlots(aInventoryPlayer);
}
@Override
diff --git a/src/main/java/gregtech/api/gui/GT_Container_4by4.java b/src/main/java/gregtech/api/gui/GT_Container_4by4.java
index 77566a0dc2..0b38a265a6 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_4by4.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_4by4.java
@@ -28,6 +28,7 @@ public class GT_Container_4by4 extends GT_ContainerMetaTile_Machine {
addSlotToContainer(new Slot(mTileEntity, 13, 71, 62));
addSlotToContainer(new Slot(mTileEntity, 14, 89, 62));
addSlotToContainer(new Slot(mTileEntity, 15, 107, 62));
+ super.addSlots(aInventoryPlayer);
}
@Override
diff --git a/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java b/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java
index 78378a52c7..6db6d45a89 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java
@@ -30,15 +30,12 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
mItemTransfer = false,
mStuttering = false;
- private Runnable circuitSlotClickCallback;
-
GT_Slot_Holo slotFluidTransferToggle;
GT_Slot_Holo slotItemTransferToggle;
GT_Slot_Holo slotFluidOutput;
GT_Slot_Holo slotFluidInput;
Slot slotBattery;
Slot slotSpecial;
- GT_Slot_Render slotCircuit;
public GT_Container_BasicMachine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity) {
super(aInventoryPlayer, aTileEntity);
@@ -54,9 +51,9 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
addSlotToContainer(slotItemTransferToggle = new GT_Slot_Holo(mTileEntity, 0, 26, 63, false, true, 1));
slotItemTransferToggle.setEnabled(!machine.isSteampowered());
addSlotToContainer(slotFluidOutput = new GT_Slot_Render(mTileEntity, 2, 107, 63));
- slotFluidOutput.setEnabled(recipes != null ? recipes.hasFluidOutputs() : false);
- addSlotToContainer(slotCircuit = new GT_Slot_Render(mTileEntity, machine.getCircuitSlot(), 153, 63));
- slotCircuit.setEnabled(machine.allowSelectCircuit());
+ slotFluidOutput.setEnabled(recipes != null && recipes.hasFluidOutputs());
+ // add circuit slot here to have it in fixed position
+ addCircuitSlot();
int tStartIndex = machine.getInputSlot();
@@ -222,40 +219,6 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
machine.mItemTransfer = !machine.mItemTransfer;
}
return null;
- case 3:
- if (machine.allowSelectCircuit() && aMouseclick < 2) {
- ItemStack newCircuit;
- if (aShifthold == 1) {
- if (aMouseclick == 0) {
- if (circuitSlotClickCallback != null)
- circuitSlotClickCallback.run();
- return null;
- } else {
- // clear
- newCircuit = null;
- }
- } else {
- ItemStack cursorStack = aPlayer.inventory.getItemStack();
- List<ItemStack> tCircuits = machine.getConfigurationCircuits();
- int index = GT_Utility.findMatchingStackInList(tCircuits, cursorStack);
- if (index < 0) {
- int curIndex = GT_Utility.findMatchingStackInList(tCircuits, machine.getStackInSlot(machine.getCircuitSlot())) + 1;
- if (aMouseclick == 0) {
- curIndex += 1;
- } else {
- curIndex -= 1;
- }
- curIndex = Math.floorMod(curIndex, tCircuits.size() + 1) - 1;
- newCircuit = curIndex < 0 ? null : tCircuits.get(curIndex);
- } else {
- // set to whatever it is
- newCircuit = tCircuits.get(index);
- }
- }
- mTileEntity.setInventorySlotContents(machine.getCircuitSlot(), newCircuit);
- return newCircuit;
- }
- return null;
default:
if (aSlotNumber == OTHER_SLOT_COUNT + 1 + machine.mInputSlotCount + machine.mOutputItems.length && aMouseclick < 2) {
if (mTileEntity.isClientSide()) {
@@ -339,8 +302,4 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
public GT_MetaTileEntity_BasicMachine getMachine() {
return (GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity();
}
-
- public void setCircuitSlotClickCallback(Runnable circuitSlotClickCallback) {
- this.circuitSlotClickCallback = circuitSlotClickCallback;
- }
}
diff --git a/src/main/java/gregtech/api/gui/GT_GUIContainerMetaTile_Machine.java b/src/main/java/gregtech/api/gui/GT_GUIContainerMetaTile_Machine.java
index 4ab5f9f921..8a744aee60 100644
--- a/src/main/java/gregtech/api/gui/GT_GUIContainerMetaTile_Machine.java
+++ b/src/main/java/gregtech/api/gui/GT_GUIContainerMetaTile_Machine.java
@@ -3,21 +3,27 @@ package gregtech.api.gui;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Dyes;
-import gregtech.api.gui.widgets.GT_GuiCoverTabLine;
-import gregtech.api.gui.widgets.GT_GuiIcon;
-import gregtech.api.gui.widgets.GT_GuiTooltip;
-import gregtech.api.gui.widgets.GT_GuiTooltipManager;
+import gregtech.api.enums.GT_Values;
+import gregtech.api.gui.widgets.*;
import gregtech.api.gui.widgets.GT_GuiTabLine.DisplayStyle;
import gregtech.api.gui.widgets.GT_GuiTabLine.GT_GuiTabIconSet;
import gregtech.api.gui.widgets.GT_GuiTabLine.GT_ITabRenderer;
import gregtech.api.gui.widgets.GT_GuiTooltipManager.GT_IToolTipRenderer;
+import gregtech.api.interfaces.metatileentity.IConfigurationCircuitSupport;
+import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
+import gregtech.api.net.GT_Packet_SetConfigurationCircuit;
import gregtech.api.util.GT_TooltipDataCache;
import gregtech.api.util.GT_Util;
+import gregtech.api.util.GT_Utility;
+
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.StatCollector;
import java.util.List;
@@ -34,6 +40,7 @@ public class GT_GUIContainerMetaTile_Machine extends GT_GUIContainer implements
protected GT_GuiTooltipManager mTooltipManager = new GT_GuiTooltipManager();
protected GT_TooltipDataCache mTooltipCache = new GT_TooltipDataCache();
+ private static final String GHOST_CIRCUIT_TOOLTIP = "GT5U.machines.select_circuit.tooltip";
private final int guiTint;
@@ -68,6 +75,7 @@ public class GT_GUIContainerMetaTile_Machine extends GT_GUIContainer implements
}
guiTint = getColorization();
+ mContainer.setCircuitSlotClickCallback(this::openSelectCircuitDialog);
}
public GT_GUIContainerMetaTile_Machine(InventoryPlayer aInventoryPlayer, IGregTechTileEntity aTileEntity,
@@ -178,7 +186,14 @@ public class GT_GUIContainerMetaTile_Machine extends GT_GUIContainer implements
* Load data for and create appropriate tooltips for this machine.
* Only called when one of regular or shift tooltips are enabled.
*/
- protected void setupTooltips() { }
+ protected void setupTooltips() {
+ if (mContainer.mTileEntity.getMetaTileEntity() instanceof IConfigurationCircuitSupport) {
+ IConfigurationCircuitSupport ccs = (IConfigurationCircuitSupport)mContainer.mTileEntity.getMetaTileEntity();
+ if (ccs.allowSelectCircuit())
+ addToolTip(new GT_GuiSlotTooltip(mContainer.getSlot(ccs.getCircuitGUISlot()), mTooltipCache.getData(GHOST_CIRCUIT_TOOLTIP)));
+ }
+
+ }
// GT_IToolTipRenderer and GT_ITabRenderer implementations
@Override
@@ -213,4 +228,42 @@ public class GT_GUIContainerMetaTile_Machine extends GT_GUIContainer implements
public boolean removeToolTip(GT_GuiTooltip toolTip) {
return mTooltipManager.removeToolTip(toolTip);
}
+
+ @Override
+ protected void onMouseWheel(int mx, int my, int delta) {
+ if (mContainer.mTileEntity.getMetaTileEntity() instanceof IConfigurationCircuitSupport) {
+ IConfigurationCircuitSupport ccs = (IConfigurationCircuitSupport)mContainer.mTileEntity.getMetaTileEntity();
+ Slot slotCircuit = mContainer.getSlot(ccs.getCircuitGUISlot());
+ if (slotCircuit != null && func_146978_c(slotCircuit.xDisplayPosition,
+ slotCircuit.yDisplayPosition, 16, 16, mx, my))
+ {
+ // emulate click
+ handleMouseClick(slotCircuit, -1, delta > 0 ? 1 : 0, 0);
+ return;
+ }
+ }
+ super.onMouseWheel(mx, my, delta);
+ }
+
+ private void openSelectCircuitDialog() {
+ IMetaTileEntity machine = mContainer.mTileEntity.getMetaTileEntity();
+ IConfigurationCircuitSupport ccs = (IConfigurationCircuitSupport)machine;
+ List<ItemStack> circuits = ccs.getConfigurationCircuits();
+ mc.displayGuiScreen(new GT_GUIDialogSelectItem(
+ StatCollector.translateToLocal("GT5U.machines.select_circuit"),
+ machine.getStackForm(0),
+ this,
+ this::onCircuitSelected,
+ circuits,
+ GT_Utility.findMatchingStackInList(circuits,
+ machine.getStackInSlot(ccs.getCircuitSlot()))));
+ }
+
+ private void onCircuitSelected(ItemStack selected) {
+ GT_Values.NW.sendToServer(new GT_Packet_SetConfigurationCircuit(mContainer.mTileEntity, selected));
+ // we will not do any validation on client side
+ // it doesn't get to actually decide what inventory contains anyway
+ IConfigurationCircuitSupport ccs = (IConfigurationCircuitSupport)mContainer.mTileEntity.getMetaTileEntity();
+ mContainer.mTileEntity.setInventorySlotContents(ccs.getCircuitSlot(), selected);
+ }
}
diff --git a/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java b/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java
index 8f26c00216..338d9e14a2 100644
--- a/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java
+++ b/src/main/java/gregtech/api/gui/GT_GUIContainer_BasicMachine.java
@@ -50,7 +50,6 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin
// Tooltip localization keys
private static final String
- GHOST_CIRCUIT_TOOLTIP = "GT5U.machines.select_circuit.tooltip",
BATTERY_SLOT_TOOLTIP = "GT5U.machines.battery_slot.tooltip",
BATTERY_SLOT_TOOLTIP_ALT = "GT5U.machines.battery_slot.tooltip.alternative",
UNUSED_SLOT_TOOLTIP = "GT5U.machines.unused_slot.tooltip",
@@ -72,7 +71,6 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin
String aTextureFile, String aNEI, byte aProgressBarDirection, byte aProgressBarAmount) {
super(new GT_Container_BasicMachine(aInventoryPlayer, aTileEntity),
RES_PATH_GUI + "basicmachines/" + aTextureFile);
- getContainer().setCircuitSlotClickCallback(this::openSelectCircuitDialog);
mProgressBarDirection = aProgressBarDirection;
mProgressBarAmount = (byte) Math.max(1, aProgressBarAmount);
mName = aName;
@@ -84,15 +82,13 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin
*/
@Override
protected void setupTooltips() {
+ super.setupTooltips();
GT_MetaTileEntity_BasicMachine machine = getMachine();
GT_Recipe_Map recipes = machine.getRecipeList();
GT_Container_BasicMachine container = getContainer();
Rectangle tProblemArea = new Rectangle(this.guiLeft + 79, this.guiTop + 44, 18, 18);
String batterySlotTooltipKey;
Object[] batterySlotTooltipArgs;
- if (machine.allowSelectCircuit()) {
- addToolTip(new GT_GuiSlotTooltip(container.slotCircuit, mTooltipCache.getData(GHOST_CIRCUIT_TOOLTIP)));
- }
if (machine.isSteampowered()) {
batterySlotTooltipKey = UNUSED_SLOT_TOOLTIP;
batterySlotTooltipArgs = new String[0];
@@ -144,24 +140,6 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin
return GT_Values.TIER_COLORS[machineTier] + GT_Values.VN[machineTier];
}
- private void openSelectCircuitDialog() {
- mc.displayGuiScreen(new GT_GUIDialogSelectItem(
- StatCollector.translateToLocal("GT5U.machines.select_circuit"),
- mContainer.mTileEntity.getMetaTileEntity().getStackForm(0),
- this,
- this::onCircuitSelected,
- getMachine().getConfigurationCircuits(),
- GT_Utility.findMatchingStackInList(getMachine().getConfigurationCircuits(),
- getMachine().getStackInSlot(getMachine().getCircuitSlot()))));
- }
-
- private void onCircuitSelected(ItemStack selected) {
- GT_Values.NW.sendToServer(new GT_Packet_SetConfigurationCircuit(mContainer.mTileEntity, selected));
- // we will not do any validation on client side
- // it doesn't get to actually decide what inventory contains anyway
- mContainer.mTileEntity.setInventorySlotContents(getMachine().getCircuitSlot(), selected);
- }
-
private GT_MetaTileEntity_BasicMachine getMachine() {
return (GT_MetaTileEntity_BasicMachine) mContainer.mTileEntity.getMetaTileEntity();
}
@@ -173,18 +151,6 @@ public class GT_GUIContainer_BasicMachine extends GT_GUIContainerMetaTile_Machin
}
@Override
- protected void onMouseWheel(int mx, int my, int delta) {
- GT_Slot_Render slotCircuit = getContainer().slotCircuit;
- if (slotCircuit != null && func_146978_c(slotCircuit.xDisplayPosition,
- slotCircuit.yDisplayPosition, 16, 16, mx, my)) {
- // emulate click
- handleMouseClick(slotCircuit, -1, delta > 0 ? 1 : 0, 0);
- return;
- }
- super.onMouseWheel(mx, my, delta);
- }
-
- @Override
protected void drawGuiContainerBackgroundLayer(float parTicks, int mouseX, int mouseY) {
super.drawGuiContainerBackgroundLayer(parTicks, mouseX, mouseY);
int x = (width - xSize) / 2;