aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java64
-rw-r--r--src/main/java/gregtech/api/gui/GT_Slot_Holo.java29
-rw-r--r--src/main/java/gregtech/api/util/GT_Recipe.java25
-rw-r--r--src/main/resources/assets/gregtech/textures/gui/basicmachines/Replicator.pngbin3164 -> 2847 bytes
5 files changed, 98 insertions, 21 deletions
diff --git a/.gitignore b/.gitignore
index 359013a646..0ad97ce741 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,6 +4,7 @@
/run/
/build/
/eclipse/
+.vscode
.classpath
.project
/bin/
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 26f795de1c..cb5fa85ffb 100644
--- a/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java
+++ b/src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java
@@ -6,6 +6,7 @@ import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicMachine;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_BasicTank;
import gregtech.api.util.GT_Utility;
+import gregtech.api.util.GT_Recipe.GT_Recipe_Map;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ICrafting;
@@ -29,6 +30,13 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
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) {
@@ -37,11 +45,17 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
@Override
public void addSlots(InventoryPlayer aInventoryPlayer) {
- addSlotToContainer(new GT_Slot_Holo(mTileEntity, 0, 8, 63, false, true, 1));
- addSlotToContainer(new GT_Slot_Holo(mTileEntity, 0, 26, 63, false, true, 1));
- addSlotToContainer(new GT_Slot_Render(mTileEntity, 2, 107, 63));
- GT_MetaTileEntity_BasicMachine machine = (GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity();
+ GT_MetaTileEntity_BasicMachine machine = getMachine();
+ GT_Recipe_Map recipes = machine.getRecipeList();
+
+ addSlotToContainer(slotFluidTransferToggle = new GT_Slot_Holo(mTileEntity, 0, 8, 63, false, true, 1));
+ slotFluidTransferToggle.setEnabled(!machine.isSteampowered());
+ 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());
int tStartIndex = machine.getInputSlot();
@@ -183,23 +197,29 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
break;
}
- addSlotToContainer(new Slot(mTileEntity, 1, 80, 63));
- addSlotToContainer(new Slot(mTileEntity, 3, 125, 63));
- addSlotToContainer(new GT_Slot_Render(mTileEntity, tStartIndex++, 53, 63));
+ addSlotToContainer(slotBattery = new Slot(mTileEntity, 1, 80, 63));
+ addSlotToContainer(slotSpecial = new Slot(mTileEntity, 3, 125, 63));
+ addSlotToContainer(slotFluidInput = new GT_Slot_Render(mTileEntity, tStartIndex++, 53, 63));
+ slotFluidInput.setEnabled(recipes != null
+ ? (recipes.hasFluidInputs())
+ : (machine.getCapacity() != 0));
}
@Override
- public ItemStack slotClick(int aSlotIndex, int aMouseclick, int aShifthold, EntityPlayer aPlayer) {
+ public ItemStack slotClick(int aSlotNumber, int aMouseclick, int aShifthold, EntityPlayer aPlayer) {
if (mTileEntity.getMetaTileEntity() == null) return null;
- GT_MetaTileEntity_BasicMachine machine = (GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity();
+ GT_MetaTileEntity_BasicMachine machine = getMachine();
if (machine == null) return null;
- ItemStack tResultStack;
- switch (aSlotIndex) {
+ switch (aSlotNumber) {
case 0:
- machine.mFluidTransfer = !machine.mFluidTransfer;
+ if (slotFluidTransferToggle.isEnabled()) {
+ machine.mFluidTransfer = !machine.mFluidTransfer;
+ }
return null;
case 1:
- machine.mItemTransfer = !machine.mItemTransfer;
+ if (slotItemTransferToggle.isEnabled()) {
+ machine.mItemTransfer = !machine.mItemTransfer;
+ }
return null;
case 3:
if (machine.allowSelectCircuit() && aMouseclick < 2) {
@@ -236,7 +256,7 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
}
return null;
default:
- if (aSlotIndex == OTHER_SLOT_COUNT + 1 + machine.mInputSlotCount + machine.mOutputItems.length && aMouseclick < 2) {
+ if (aSlotNumber == OTHER_SLOT_COUNT + 1 + machine.mInputSlotCount + machine.mOutputItems.length && aMouseclick < 2) {
if (mTileEntity.isClientSide()) {
// see parent class slotClick for an explanation on why doing this
GT_MetaTileEntity_BasicTank tTank = (GT_MetaTileEntity_BasicTank) mTileEntity.getMetaTileEntity();
@@ -249,7 +269,7 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
mTileEntity.markInventoryBeenModified();
return tToken;
} else {
- return super.slotClick(aSlotIndex, aMouseclick, aShifthold, aPlayer);
+ return super.slotClick(aSlotNumber, aMouseclick, aShifthold, aPlayer);
}
}
}
@@ -259,9 +279,9 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
super.detectAndSendChanges();
if (mTileEntity.isClientSide() || mTileEntity.getMetaTileEntity() == null) return;
- mFluidTransfer = ((GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity()).mFluidTransfer;
- mItemTransfer = ((GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity()).mItemTransfer;
- mStuttering = ((GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity()).mStuttering;
+ mFluidTransfer = getMachine().mFluidTransfer;
+ mItemTransfer = getMachine().mItemTransfer;
+ mStuttering = getMachine().mStuttering;
for (Object crafter : this.crafters) {
ICrafting var1 = (ICrafting) crafter;
@@ -305,12 +325,16 @@ public class GT_Container_BasicMachine extends GT_Container_BasicTank {
@Override
public int getSlotCount() {
- return getShiftClickSlotCount() + ((GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity()).mOutputItems.length + 2;
+ return getShiftClickSlotCount() + getMachine().mOutputItems.length + 2;
}
@Override
public int getShiftClickSlotCount() {
- return ((GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity()).mInputSlotCount;
+ return getMachine().mInputSlotCount;
+ }
+
+ public GT_MetaTileEntity_BasicMachine getMachine() {
+ return (GT_MetaTileEntity_BasicMachine) mTileEntity.getMetaTileEntity();
}
public void setCircuitSlotClickCallback(Runnable circuitSlotClickCallback) {
diff --git a/src/main/java/gregtech/api/gui/GT_Slot_Holo.java b/src/main/java/gregtech/api/gui/GT_Slot_Holo.java
index 22d4f091a4..403745bc03 100644
--- a/src/main/java/gregtech/api/gui/GT_Slot_Holo.java
+++ b/src/main/java/gregtech/api/gui/GT_Slot_Holo.java
@@ -1,5 +1,7 @@
package gregtech.api.gui;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
@@ -7,6 +9,7 @@ import net.minecraft.item.ItemStack;
public class GT_Slot_Holo extends Slot {
public final int mSlotIndex;
+ public boolean mEnabled = true;
public boolean
mCanInsertItem,
mCanStackItem;
@@ -46,4 +49,30 @@ public class GT_Slot_Holo extends Slot {
public boolean canTakeStack(EntityPlayer par1EntityPlayer) {
return false;
}
+
+ /**
+ * Whether this slot should be ignored in event processing,
+ * for example highlight the slot on mouseOver
+ * @param enabled
+ */
+ public void setEnabled(boolean enabled) {
+ mEnabled = enabled;
+ }
+
+ /**
+ * Use this value to determine whether to ignore this slot in event processing
+ */
+ public boolean isEnabled() {
+ return mEnabled;
+ }
+
+ /**
+ * This function controls whether to highlight the slot on mouseOver.
+ */
+ @Override
+ @SideOnly(Side.CLIENT)
+ public boolean func_111238_b()
+ {
+ return isEnabled();
+ }
}
diff --git a/src/main/java/gregtech/api/util/GT_Recipe.java b/src/main/java/gregtech/api/util/GT_Recipe.java
index 9fcdac0b51..fe3e90e716 100644
--- a/src/main/java/gregtech/api/util/GT_Recipe.java
+++ b/src/main/java/gregtech/api/util/GT_Recipe.java
@@ -845,6 +845,11 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
public final String mUniqueIdentifier;
/**
+ * Whether this recipe map contains any fluid outputs.
+ */
+ private boolean mHasFluidOutputs = false;
+
+ /**
* Initialises a new type of Recipe Handler.
*
* @param aRecipeList a List you specify as Recipe List. Usually just an ArrayList with a pre-initialised Size.
@@ -940,12 +945,16 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
public GT_Recipe add(GT_Recipe aRecipe) {
mRecipeList.add(aRecipe);
- for (FluidStack aFluid : aRecipe.mFluidInputs)
+ for (FluidStack aFluid : aRecipe.mFluidInputs) {
if (aFluid != null) {
Collection<GT_Recipe> tList = mRecipeFluidMap.computeIfAbsent(aFluid.getFluid(), k -> new HashSet<>(1));
tList.add(aRecipe);
mRecipeFluidNameMap.add(aFluid.getFluid().getName());
}
+ }
+ if (aRecipe.mFluidOutputs.length != 0) {
+ this.mHasFluidOutputs = true;
+ }
return addToItemMap(aRecipe);
}
@@ -1077,6 +1086,20 @@ public class GT_Recipe implements Comparable<GT_Recipe> {
}
return aRecipe;
}
+
+ /**
+ * Whether this recipe map contains any fluid outputs.
+ */
+ public boolean hasFluidOutputs() {
+ return mHasFluidOutputs;
+ }
+
+ /**
+ * Whether this recipe map contains any fluid inputs.
+ */
+ public boolean hasFluidInputs() {
+ return mRecipeFluidNameMap.size() != 0;
+ }
}
// -----------------------------------------------------------------------------------------------------------------
diff --git a/src/main/resources/assets/gregtech/textures/gui/basicmachines/Replicator.png b/src/main/resources/assets/gregtech/textures/gui/basicmachines/Replicator.png
index f671c60c15..208912e1bc 100644
--- a/src/main/resources/assets/gregtech/textures/gui/basicmachines/Replicator.png
+++ b/src/main/resources/assets/gregtech/textures/gui/basicmachines/Replicator.png
Binary files differ