diff options
author | miozune <miozune@gmail.com> | 2023-05-29 19:11:57 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-29 12:11:57 +0200 |
commit | 6968f15a7190f6a97ad598cbb9e6dd1e18a594de (patch) | |
tree | 6079630f941161307c6996d62bd6531497029513 /src/main | |
parent | 34597af2b1c4869e97ce83586fcfc82c88cdb401 (diff) | |
download | GT5-Unofficial-6968f15a7190f6a97ad598cbb9e6dd1e18a594de.tar.gz GT5-Unofficial-6968f15a7190f6a97ad598cbb9e6dd1e18a594de.tar.bz2 GT5-Unofficial-6968f15a7190f6a97ad598cbb9e6dd1e18a594de.zip |
Allow setting larger threshold of item detector cover for digital chests (#2035)
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java | 37 | ||||
-rw-r--r-- | src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java | 27 |
2 files changed, 40 insertions, 24 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java index 86c0f4c4dc..f71ef2ee30 100644 --- a/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java +++ b/src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java @@ -216,6 +216,7 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter. private static final String ALL_TEXT = "All"; private int maxSlot; + private int maxThreshold; public ItemMeterUIFactory(GT_CoverUIBuildContext buildContext) { super(buildContext); @@ -226,7 +227,8 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter. final String INVERTED = GT_Utility.trans("INVERTED", "Inverted"); final String NORMAL = GT_Utility.trans("NORMAL", "Normal"); - maxSlot = getMaxSlot(); + setMaxSlot(); + setMaxThreshold(); builder.widget( new CoverDataControllerWidget<>(this::getCoverData, this::setCoverData, GT_Cover_ItemMeter.this) @@ -269,9 +271,9 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter. return coverData; }, widget -> widget.setOnScrollNumbers(1, 10, 64) - .setNumbers(0, getUpperBound()) + .setNumbers(0, maxThreshold) .setPos(0, spaceY * 2 + 2) - .setSize(spaceX * 2 + 5, 12)) + .setSize(spaceX * 4 + 5, 12)) .setPos(startX, startY)) .widget( new ItemWatcherSlotWidget().setGetter(this::getTargetItem) @@ -287,16 +289,27 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter. .setPos(startX + spaceX * 3, 4 + startY + spaceY)) .widget( new TextWidget(GT_Utility.trans("221", "Item threshold")).setDefaultColor(COLOR_TEXT_GRAY.get()) - .setPos(startX + spaceX * 3, startY + spaceY * 2 + 4)); + .setPos(startX + spaceX * 5 - 10, startY + spaceY * 2 + 4)); + } + + private void setMaxSlot() { + final ICoverable tile = getUIBuildContext().getTile(); + if (!tile.isDead() && tile instanceof IGregTechTileEntity gtTile + && !(gtTile.getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalChestBase)) { + maxSlot = Math.min(tile.getSizeInventory() - 1, SLOT_MASK - 1); + } else { + maxSlot = -1; + } } - private int getMaxSlot() { + private void setMaxThreshold() { final ICoverable tile = getUIBuildContext().getTile(); - if (tile instanceof TileEntity && !tile.isDead() - && tile instanceof IGregTechTileEntity - && !(((IGregTechTileEntity) tile).getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalChestBase)) - return Math.min(tile.getSizeInventory() - 1, SLOT_MASK - 1); - else return -1; + if (!tile.isDead() && tile instanceof IGregTechTileEntity gtTile + && gtTile.getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalChestBase) { + maxThreshold = gtTile.getMaxItemCount(); + } else { + maxThreshold = maxSlot > 0 ? maxSlot * 64 : Integer.MAX_VALUE; + } } private int getIntFromText(String text) { @@ -311,10 +324,6 @@ public class GT_Cover_ItemMeter extends GT_CoverBehaviorBase<GT_Cover_ItemMeter. return val < 0 ? ALL_TEXT : String.valueOf(val); } - private int getUpperBound() { - return maxSlot > 0 ? maxSlot * 64 : 999_999; - } - private ItemStack getTargetItem() { ItemMeterData coverVariable = getCoverData(); if (coverVariable == null || coverVariable.slot < 0) { diff --git a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java index 9f5200b6fc..fb7fa93ea7 100644 --- a/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java +++ b/src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java @@ -152,6 +152,7 @@ public class GT_Cover_WirelessItemDetector private static final String ALL_TEXT = "All"; private int maxSlot; + private int maxThreshold; public WirelessItemDetectorUIFactory(GT_CoverUIBuildContext buildContext) { super(buildContext); @@ -169,7 +170,8 @@ public class GT_Cover_WirelessItemDetector @Override protected void addUIWidgets(ModularWindow.Builder builder) { - maxSlot = getMaxSlot(); + setMaxSlot(); + setMaxThreshold(); super.addUIWidgets(builder); builder.widget( new ItemWatcherSlotWidget().setGetter(this::getTargetItem) @@ -193,7 +195,7 @@ public class GT_Cover_WirelessItemDetector return coverData; }, widget -> widget.setOnScrollNumbers(1, 10, 64) - .setNumbers(() -> 0, this::getMaxItemCount) + .setNumbers(0, maxThreshold) .setPos(1, 2 + spaceY * 2) .setSize(spaceX * 5 - 4, 12)) .addFollower( @@ -218,19 +220,24 @@ public class GT_Cover_WirelessItemDetector .setSize(spaceX * 4 - 8, 12)); } - private int getMaxSlot() { + private void setMaxSlot() { final ICoverable tile = getUIBuildContext().getTile(); - if (tile instanceof TileEntity && !tile.isDead() - && tile instanceof IGregTechTileEntity - && !(((IGregTechTileEntity) tile).getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalChestBase)) { - return tile.getSizeInventory() - 1; + if (!tile.isDead() && tile instanceof IGregTechTileEntity gtTile + && !(gtTile.getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalChestBase)) { + maxSlot = tile.getSizeInventory() - 1; } else { - return -1; + maxSlot = -1; } } - private int getMaxItemCount() { - return maxSlot > 0 ? maxSlot * 64 : Integer.MAX_VALUE; + private void setMaxThreshold() { + final ICoverable tile = getUIBuildContext().getTile(); + if (!tile.isDead() && tile instanceof IGregTechTileEntity gtTile + && gtTile.getMetaTileEntity() instanceof GT_MetaTileEntity_DigitalChestBase) { + maxThreshold = gtTile.getMaxItemCount(); + } else { + maxThreshold = maxSlot > 0 ? maxSlot * 64 : Integer.MAX_VALUE; + } } private int getIntFromText(String text) { |