From 7ed516e30ba224b4b8e3fad9c836c22ca00bfcdb Mon Sep 17 00:00:00 2001 From: Jason Mitchell Date: Fri, 20 Jan 2023 00:30:50 -0800 Subject: 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 * 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 * 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 * 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 --- .../metatileentity/IMetaTileEntityItemPipe.java | 61 ++++++++-------------- 1 file changed, 21 insertions(+), 40 deletions(-) (limited to 'src/main/java/gregtech/api/interfaces/metatileentity') 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, -- cgit