diff options
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity')
3 files changed, 71 insertions, 39 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java b/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java index 7d4cbae063..13ea66e7d2 100644 --- a/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java +++ b/src/main/java/gregtech/api/metatileentity/MetaTileEntity.java @@ -11,6 +11,7 @@ import gnu.trove.list.TIntList; import gnu.trove.list.array.TIntArrayList; import gregtech.api.GregTech_API; import gregtech.api.enums.SoundResource; +import gregtech.api.interfaces.metatileentity.IConfigurationCircuitSupport; import gregtech.api.interfaces.metatileentity.IMachineCallback; import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; @@ -710,7 +711,15 @@ public abstract class MetaTileEntity implements IMetaTileEntity, IMachineCallbac @Override public void setInventorySlotContents(int aIndex, ItemStack aStack) { markDirty(); - if (aIndex >= 0 && aIndex < mInventory.length) mInventory[aIndex] = aStack; + if (this instanceof IConfigurationCircuitSupport) { + IConfigurationCircuitSupport ccs = (IConfigurationCircuitSupport)this; + if (ccs.allowSelectCircuit() && aIndex == ccs.getCircuitSlot() && aStack != null) { + mInventory[aIndex] = GT_Utility.copyAmount(0, aStack); + return; + } + } + if (aIndex >= 0 && aIndex < mInventory.length) + mInventory[aIndex] = aStack; } @Override @@ -1047,8 +1056,7 @@ public abstract class MetaTileEntity implements IMetaTileEntity, IMachineCallbac IEnergyGrid eg = getProxy().getNode().getGrid().getCache(IEnergyGrid.class); if (!eg.isNetworkPowered()) return "(power)"; - } - catch(Throwable ex) { + } catch(Throwable ex) { ex.printStackTrace(); } return ""; diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java index bfc8fd0096..ce5c1b9ee4 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java @@ -7,6 +7,7 @@ import gregtech.api.enums.SoundResource; import gregtech.api.gui.GT_Container_BasicMachine; import gregtech.api.gui.GT_GUIContainer_BasicMachine; import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IConfigurationCircuitSupport; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.objects.GT_ItemStack; import gregtech.api.render.TextureFactory; @@ -46,7 +47,7 @@ import static gregtech.api.util.GT_Utility.moveMultipleItemStacks; * This is the main construct for my Basic Machines such as the Automatic Extractor * Extend this class to make a simple Machine */ -public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_BasicTank { +public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_BasicTank implements IConfigurationCircuitSupport { /** * return values for checkRecipe() @@ -151,13 +152,6 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B } @Override - public void setInventorySlotContents(int aIndex, ItemStack aStack) { - if (allowSelectCircuit() && aIndex == getCircuitSlot() && aStack != null && aStack.stackSize != 0) - aStack = GT_Utility.copyAmount(0, aStack); - super.setInventorySlotContents(aIndex, aStack); - } - - @Override public ITexture[][][] getTextureSet(ITexture[] aTextures) { ITexture[][][] rTextures = new ITexture[14][17][]; aTextures = Arrays.copyOf(aTextures, 14); @@ -849,6 +843,7 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B return !mDisableMultiStack || mInventory[aIndex] == null; } + @Override public boolean allowSelectCircuit() { return false; } @@ -865,18 +860,15 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B return inputs; } - /** - * This might be non-final in the future, but for now, no, don't change this. - */ - public final int getCircuitSlot() { + @Override + public int getCircuitSlot() { return 4; } - /** - * Return a list of possible configuration circuit this machine expects. - * - * This list is unmodifiable. Its elements are not supposed to be modified in any way! - */ + @Override + public int getCircuitGUISlot() { return 3; } + + @Override public List<ItemStack> getConfigurationCircuits() { return GregTech_API.getConfigurationCircuitList(mTier); } @@ -1036,4 +1028,14 @@ public abstract class GT_MetaTileEntity_BasicMachine extends GT_MetaTileEntity_B public Power getPower() { return mPower; } + + @Override + public int getCircuitSlotX() { + return 153; + } + + @Override + public int getCircuitSlotY() { + return 63; + } } diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java index fb5eec7880..ba6e1698b1 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java @@ -1,9 +1,9 @@ package gregtech.api.metatileentity.implementations; -import appeng.util.Platform; import gregtech.GT_Mod; import gregtech.api.gui.*; import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IConfigurationCircuitSupport; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.render.TextureFactory; @@ -21,18 +21,17 @@ import net.minecraft.util.StatCollector; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; import static gregtech.api.enums.Textures.BlockIcons.*; -public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { +public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch implements IConfigurationCircuitSupport { public GT_Recipe_Map mRecipeMap = null; public boolean disableSort; public boolean disableFilter = true; public boolean disableLimited = true; public GT_MetaTileEntity_Hatch_InputBus(int id, String name, String nameRegional, int tier) { - this(id, name, nameRegional, tier, getSlots(tier)); + this(id, name, nameRegional, tier, getSlots(tier) + 1); } protected GT_MetaTileEntity_Hatch_InputBus(int id, String name, String nameRegional, int tier, int slots, String[] description) { @@ -53,7 +52,7 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { } public GT_MetaTileEntity_Hatch_InputBus(String aName, int aTier, String[] aDescription, ITexture[][][] aTextures) { - this(aName, aTier, getSlots(aTier), aDescription, aTextures); + this(aName, aTier, getSlots(aTier) + 1, aDescription, aTextures); } public GT_MetaTileEntity_Hatch_InputBus(String aName, int aTier, int aSlots, String[] aDescription, ITexture[][][] aTextures) { @@ -91,7 +90,7 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { @Override public boolean isValidSlot(int aIndex) { - return true; + return aIndex != getCircuitSlot(); } @Override @@ -121,6 +120,17 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { } @Override + public int getCircuitSlotX() { + return 153; + } + + @Override + public int getCircuitSlotY() { + return 63; + } + + + @Override public void initDefaultModes(NBTTagCompound aNBT) { if (!getBaseMetaTileEntity().getWorld().isRemote) { GT_ClientPreference tPreference = GT_Mod.gregtechproxy.getClientPreference(getBaseMetaTileEntity().getOwnerUuid()); @@ -132,13 +142,13 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { @Override public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) { switch (mInventory.length) { - case 1: + case 2: return new GT_GUIContainer_1by1(aPlayerInventory, aBaseMetaTileEntity, "Input Bus"); - case 4: + case 5: return new GT_GUIContainer_2by2(aPlayerInventory, aBaseMetaTileEntity, "Input Bus"); - case 9: + case 10: return new GT_GUIContainer_3by3(aPlayerInventory, aBaseMetaTileEntity, "Input Bus"); - case 16: + case 17: return new GT_GUIContainer_4by4(aPlayerInventory, aBaseMetaTileEntity, "Input Bus"); default: return new GT_GUIContainer_4by4(aPlayerInventory, aBaseMetaTileEntity, "Input Bus"); @@ -153,18 +163,20 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { } public void updateSlots() { - for (int i = 0; i < mInventory.length; i++) - if (mInventory[i] != null && mInventory[i].stackSize <= 0) mInventory[i] = null; - if(!disableSort) + for (int i = 0; i < mInventory.length - 1; i++) + if (mInventory[i] != null && mInventory[i].stackSize <= 0) + mInventory[i] = null; + if (!disableSort) fillStacksIntoFirstSlots(); } protected void fillStacksIntoFirstSlots() { - HashMap<GT_Utility.ItemId, Integer> slots = new HashMap<>(mInventory.length); - HashMap<GT_Utility.ItemId, ItemStack> stacks = new HashMap<>(mInventory.length); - List<GT_Utility.ItemId> order = new ArrayList<>(mInventory.length); - List<Integer> validSlots = new ArrayList<>(mInventory.length); - for (int i = 0; i < mInventory.length; i++) { + final int L = mInventory.length - 1; + HashMap<GT_Utility.ItemId, Integer> slots = new HashMap<>(L); + HashMap<GT_Utility.ItemId, ItemStack> stacks = new HashMap<>(L); + List<GT_Utility.ItemId> order = new ArrayList<>(L); + List<Integer> validSlots = new ArrayList<>(L); + for (int i = 0; i < L; i++) { if (!isValidSlot(i)) continue; validSlots.add(i); @@ -237,12 +249,14 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { @Override public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) { + if (aIndex == getCircuitSlot()) + return false; return aSide == getBaseMetaTileEntity().getFrontFacing(); } @Override public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) { - return aSide == getBaseMetaTileEntity().getFrontFacing() + return aSide == getBaseMetaTileEntity().getFrontFacing() && aIndex != getCircuitSlot() && (mRecipeMap == null || disableFilter || mRecipeMap.containsInput(aStack)) && (disableLimited || limitedAllowPutStack(aIndex, aStack)); } @@ -259,4 +273,12 @@ public class GT_MetaTileEntity_Hatch_InputBus extends GT_MetaTileEntity_Hatch { public void endRecipeProcessing() { } + + @Override + public boolean allowSelectCircuit() { + return true; + } + + @Override + public int getCircuitSlot() { return getSlots(mTier); } } |