aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/metatileentity
diff options
context:
space:
mode:
authorrepo-alt <wvk17@yandex.ru>2022-08-23 19:44:25 +0300
committerGitHub <noreply@github.com>2022-08-23 18:44:25 +0200
commit6bef2556c78cbbd6bde0f73a9849ab709590c8bd (patch)
tree40146cf238d68c281278e7bd0dd5929656479435 /src/main/java/gregtech/api/metatileentity
parent43e283f28747967af991a7dfc36d70124c5be765 (diff)
downloadGT5-Unofficial-6bef2556c78cbbd6bde0f73a9849ab709590c8bd.tar.gz
GT5-Unofficial-6bef2556c78cbbd6bde0f73a9849ab709590c8bd.tar.bz2
GT5-Unofficial-6bef2556c78cbbd6bde0f73a9849ab709590c8bd.zip
Refactored built-in integrated circuit support (#1284)
* Refactored built-in integrated circuit support Added built-in integrated circuit to input buses * fix spacing
Diffstat (limited to 'src/main/java/gregtech/api/metatileentity')
-rw-r--r--src/main/java/gregtech/api/metatileentity/MetaTileEntity.java14
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_BasicMachine.java36
-rw-r--r--src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Hatch_InputBus.java60
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); }
}