aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormiozune <miozune@gmail.com>2023-05-29 19:11:57 +0900
committerGitHub <noreply@github.com>2023-05-29 12:11:57 +0200
commit6968f15a7190f6a97ad598cbb9e6dd1e18a594de (patch)
tree6079630f941161307c6996d62bd6531497029513
parent34597af2b1c4869e97ce83586fcfc82c88cdb401 (diff)
downloadGT5-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)
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_ItemMeter.java37
-rw-r--r--src/main/java/gregtech/common/covers/redstone/GT_Cover_WirelessItemDetector.java27
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) {