aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/interfaces
diff options
context:
space:
mode:
authorJason Mitchell <mitchej@gmail.com>2023-01-20 00:30:50 -0800
committerGitHub <noreply@github.com>2023-01-20 09:30:50 +0100
commit7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb (patch)
treebea33f6637b929427e9abbe733e19606f8bf9032 /src/main/java/gregtech/api/interfaces
parent750a4070af4756e3708e2b2555b9874864bf3cfb (diff)
downloadGT5-Unofficial-7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb.tar.gz
GT5-Unofficial-7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb.tar.bz2
GT5-Unofficial-7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb.zip
MTE Inventory updates (#1496)
* MTE Inventory updates * Separate Input/Output inventory * Use a LinkedHashMap to ensure inventory orders are deterministic * Input/Output work on either Input/Output inventories * MTE Inventory * Add GT_Packet_MultiTileEntity * More dyanmic packet with packetFeatures * Add IMTE_HasModes for MultiBlockPart * Help with MTE Inventory (#1613) * convert inventory to use ItemStackHandler * Update MUI * inventories * move Iteminventory to its own method Co-authored-by: miozune <miozune@gmail.com> * Update MUI * Update MUI * Add IMultiBlockPart * Mte fluid inventory (#1639) * first work on fluid inventory * make gui work with numbers not dividable by 4 * use math.min * add outputfluids saving * actually working * Update MUI Co-authored-by: miozune <miozune@gmail.com> * Ticking Covers! * Parts now register covers with the controller * Controllers now tick covers on parts * Break cover ticking out into `tickCoverAtSide` Fix some inventory methods on MultiBlockController * Filter on tickable covers * Improve GUIs for MTEs (#1650) * working controller GUI * locked inventory selection work * input and output locking of inventories Co-authored-by: miozune <miozune@gmail.com> * spotless * CoverInfo refactor (#1654) * Add `CoverInfo` and deprecate the old fields to hold cover information * Disable MTE registration * Fix NPE - Return EMPTY_INFO for SIDE_UNKNOWN Temporarily add back old NBT saving in case of a revert so covers aren't lost. * Actually save the old NBT data, instead of empty Co-authored-by: BlueWeabo <76872108+BlueWeabo@users.noreply.github.com> Co-authored-by: miozune <miozune@gmail.com>
Diffstat (limited to 'src/main/java/gregtech/api/interfaces')
-rw-r--r--src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java8
-rw-r--r--src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityItemPipe.java61
-rw-r--r--src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java5
3 files changed, 31 insertions, 43 deletions
diff --git a/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java b/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java
index 7c2361af83..47edc7af93 100644
--- a/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java
+++ b/src/main/java/gregtech/api/interfaces/covers/IControlsWorkCover.java
@@ -1,5 +1,7 @@
package gregtech.api.interfaces.covers;
+import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES;
+
import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IMachineProgress;
@@ -15,9 +17,9 @@ public interface IControlsWorkCover {
* @return true if the cover is the first (side) one
**/
static boolean makeSureOnlyOne(byte aMySide, ICoverable aTileEntity) {
- for (byte i = 0; i < 6; i++) {
- if (aTileEntity.getCoverBehaviorAtSideNew(i) instanceof IControlsWorkCover && i < aMySide) {
- aTileEntity.dropCover(i, i, true);
+ for (byte tSide : ALL_VALID_SIDES) {
+ if (aTileEntity.getCoverBehaviorAtSideNew(tSide) instanceof IControlsWorkCover && tSide < aMySide) {
+ aTileEntity.dropCover(tSide, tSide, true);
aTileEntity.markDirty();
return false;
}
diff --git a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityItemPipe.java b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityItemPipe.java
index 1b1ce36871..5375ea85ee 100644
--- a/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityItemPipe.java
+++ b/src/main/java/gregtech/api/interfaces/metatileentity/IMetaTileEntityItemPipe.java
@@ -1,5 +1,7 @@
package gregtech.api.interfaces.metatileentity;
+import static gregtech.api.enums.GT_Values.ALL_VALID_SIDES;
+
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.util.GT_Utility;
@@ -56,39 +58,29 @@ public interface IMetaTileEntityItemPipe extends IMetaTileEntity {
aStep += aMetaTileEntity.getStepSize();
if (aIgnoreCapacity || aMetaTileEntity.pipeCapacityCheck())
if (aMap.get(aMetaTileEntity) == null || aMap.get(aMetaTileEntity) > aStep) {
- IGregTechTileEntity aBaseMetaTileEntity = aMetaTileEntity.getBaseMetaTileEntity();
+ final IGregTechTileEntity aBaseMetaTileEntity = aMetaTileEntity.getBaseMetaTileEntity();
aMap.put(aMetaTileEntity, aStep);
- for (byte i = 0, j = 0; i < 6; i++) {
+ byte oppositeSide;
+ for (byte side : ALL_VALID_SIDES) {
if (aMetaTileEntity instanceof IConnectable
- && !((IConnectable) aMetaTileEntity).isConnectedAtSide(i)) continue;
- j = GT_Utility.getOppositeSide(i);
+ && !((IConnectable) aMetaTileEntity).isConnectedAtSide(side)) continue;
+ oppositeSide = GT_Utility.getOppositeSide(side);
if (aSuckItems) {
- if (aBaseMetaTileEntity
- .getCoverBehaviorAtSideNew(i)
- .letsItemsIn(
- i,
- aBaseMetaTileEntity.getCoverIDAtSide(i),
- aBaseMetaTileEntity.getComplexCoverDataAtSide(i),
- -2,
- aBaseMetaTileEntity)) {
- IGregTechTileEntity tItemPipe = aBaseMetaTileEntity.getIGregTechTileEntityAtSide(i);
+ if (aBaseMetaTileEntity.getCoverInfoAtSide(side).letsItemsIn(-2)) {
+ final IGregTechTileEntity tItemPipe =
+ aBaseMetaTileEntity.getIGregTechTileEntityAtSide(side);
if (aBaseMetaTileEntity.getColorization() >= 0) {
- byte tColor = tItemPipe.getColorization();
+ final byte tColor = tItemPipe.getColorization();
if (tColor >= 0 && tColor != aBaseMetaTileEntity.getColorization()) {
continue;
}
}
if (tItemPipe instanceof BaseMetaPipeEntity) {
- IMetaTileEntity tMetaTileEntity = tItemPipe.getMetaTileEntity();
+ final IMetaTileEntity tMetaTileEntity = tItemPipe.getMetaTileEntity();
if (tMetaTileEntity instanceof IMetaTileEntityItemPipe
&& tItemPipe
- .getCoverBehaviorAtSideNew(j)
- .letsItemsOut(
- j,
- tItemPipe.getCoverIDAtSide(j),
- tItemPipe.getComplexCoverDataAtSide(j),
- -2,
- tItemPipe)) {
+ .getCoverInfoAtSide(oppositeSide)
+ .letsItemsOut(-2)) {
scanPipes(
(IMetaTileEntityItemPipe) tMetaTileEntity,
aMap,
@@ -99,33 +91,22 @@ public interface IMetaTileEntityItemPipe extends IMetaTileEntity {
}
}
} else {
- if (aBaseMetaTileEntity
- .getCoverBehaviorAtSideNew(i)
- .letsItemsOut(
- i,
- aBaseMetaTileEntity.getCoverIDAtSide(i),
- aBaseMetaTileEntity.getComplexCoverDataAtSide(i),
- -2,
- aBaseMetaTileEntity)) {
- IGregTechTileEntity tItemPipe = aBaseMetaTileEntity.getIGregTechTileEntityAtSide(i);
+ if (aBaseMetaTileEntity.getCoverInfoAtSide(side).letsItemsOut(-2)) {
+ final IGregTechTileEntity tItemPipe =
+ aBaseMetaTileEntity.getIGregTechTileEntityAtSide(side);
if (tItemPipe != null) {
if (aBaseMetaTileEntity.getColorization() >= 0) {
- byte tColor = tItemPipe.getColorization();
+ final byte tColor = tItemPipe.getColorization();
if (tColor >= 0 && tColor != aBaseMetaTileEntity.getColorization()) {
continue;
}
}
if (tItemPipe instanceof BaseMetaPipeEntity) {
- IMetaTileEntity tMetaTileEntity = tItemPipe.getMetaTileEntity();
+ final IMetaTileEntity tMetaTileEntity = tItemPipe.getMetaTileEntity();
if (tMetaTileEntity instanceof IMetaTileEntityItemPipe
&& tItemPipe
- .getCoverBehaviorAtSideNew(j)
- .letsItemsIn(
- j,
- tItemPipe.getCoverIDAtSide(j),
- tItemPipe.getComplexCoverDataAtSide(j),
- -2,
- tItemPipe)) {
+ .getCoverInfoAtSide(oppositeSide)
+ .letsItemsIn(-2)) {
scanPipes(
(IMetaTileEntityItemPipe) tMetaTileEntity,
aMap,
diff --git a/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java b/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java
index 6beb34a305..df131c84c2 100644
--- a/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java
+++ b/src/main/java/gregtech/api/interfaces/tileentity/ICoverable.java
@@ -3,6 +3,7 @@ package gregtech.api.interfaces.tileentity;
import gregtech.api.util.GT_CoverBehavior;
import gregtech.api.util.GT_CoverBehaviorBase;
import gregtech.api.util.ISerializableObject;
+import gregtech.common.covers.CoverInfo;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
@@ -32,6 +33,10 @@ public interface ICoverable extends IRedstoneTileEntity, IHasInventory, IBasicEn
@Deprecated
int getCoverDataAtSide(byte aSide);
+ default CoverInfo getCoverInfoAtSide(byte aSide) {
+ return null;
+ }
+
default ISerializableObject getComplexCoverDataAtSide(byte aSide) {
return new ISerializableObject.LegacyCoverData(getCoverDataAtSide(aSide));
}