diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | src/main/java/gregtech/api/gui/GT_Container_BasicMachine.java | 64 | ||||
-rw-r--r-- | src/main/java/gregtech/api/gui/GT_Slot_Holo.java | 29 | ||||
-rw-r--r-- | src/main/java/gregtech/api/util/GT_Recipe.java | 25 | ||||
-rw-r--r-- | src/main/resources/assets/gregtech/textures/gui/basicmachines/Replicator.png | bin | 3164 -> 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 Binary files differindex 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 |