diff --git a/src/main/java/com/extendedae_plus/ae/client/gui/Icon.java b/src/main/java/com/extendedae_plus/ae/client/gui/Icon.java new file mode 100644 index 0000000..9574df3 --- /dev/null +++ b/src/main/java/com/extendedae_plus/ae/client/gui/Icon.java @@ -0,0 +1,33 @@ +package com.extendedae_plus.ae.client.gui; + +import appeng.client.gui.style.Blitter; +import com.extendedae_plus.ExtendedAEPlus; +import net.minecraft.resources.ResourceLocation; + +public enum Icon { + REDSTONE_LOW(0, 0), + REDSTONE_HIGH(16, 0); + + public final int x; + public final int y; + public final int width; + public final int height; + public static final ResourceLocation TEXTURE = new ResourceLocation(ExtendedAEPlus.MODID, "textures/guis/states.png"); + public static final int TEXTURE_WIDTH = 256; + public static final int TEXTURE_HEIGHT = 256; + + private Icon(int x, int y) { + this(x, y, 16, 16); + } + + private Icon(int x, int y, int width, int height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + } + + public Blitter getBlitter() { + return Blitter.texture(TEXTURE, TEXTURE_WIDTH, TEXTURE_HEIGHT).src(this.x, this.y, this.width, this.height); + } +} diff --git a/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java b/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java index 2981e98..fcc6e5d 100644 --- a/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java +++ b/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java @@ -29,6 +29,7 @@ public class EntitySpeedTickerMenu extends UpgradeableMenu extends Up ) { @Override public List getTooltipMessage() { + // 如果目标在黑名单中,直接显示已禁用的提示 + try { + if (menu != null && menu.targetBlacklisted) { + var title = Component.literal("实体加速"); + var stateLine = Component.literal("已禁用(目标在黑名单)"); + return List.of(title, stateLine); + } + } catch (Exception ignored) {} + boolean enabled = eap$entitySpeedTickerEnabled; var title = Component.literal("实体加速"); var stateLine = enabled @@ -48,6 +58,23 @@ public class EntitySpeedTickerScreen extends Up : Component.literal("已关闭: 不会对目标方块实体进行加速"); return List.of(title, stateLine); } + + @Override + protected Icon getIcon() { + try { + if (menu != null && menu.targetBlacklisted) { + // 黑名单时显示禁用图标 + return Icon.INVALID; + } + } catch (Exception ignored) {} + + // 根据当前值显示不同图标(可按需替换 Icon 常量) + if (this.getCurrentValue() == YesNo.YES) { + return Icon.VALID; + } else { + return Icon.INVALID; + } + } }; // 初始化后立刻对齐当前@GuiSync状态,避免首帧显示不一致 eap$entitySpeedTickerToggle.set(this.eap$entitySpeedTickerEnabled ? YesNo.YES : YesNo.NO); @@ -66,7 +93,14 @@ public class EntitySpeedTickerScreen extends Up } this.eap$entitySpeedTickerEnabled = desired; - this.eap$entitySpeedTickerToggle.set(desired ? YesNo.YES : YesNo.NO); + // 如果目标在黑名单中,禁用切换并强制显示为关闭 + if (this.menu != null && this.menu.targetBlacklisted) { + this.eap$entitySpeedTickerToggle.set(YesNo.NO); + this.eap$entitySpeedTickerToggle.active = false; + } else { + this.eap$entitySpeedTickerToggle.set(desired ? YesNo.YES : YesNo.NO); + this.eap$entitySpeedTickerToggle.active = true; + } } textData(); } @@ -76,6 +110,16 @@ public class EntitySpeedTickerScreen extends Up } private void textData() { + // 如果目标被黑名单禁止,则显示禁用状态并把数值显示为 0 + if (getMenu().targetBlacklisted) { + setTextContent("enable", Component.translatable("screen.extendedae_plus.entity_speed_ticker.enable")); + setTextContent("speed", Component.translatable("screen.extendedae_plus.entity_speed_ticker.speed", 0)); + setTextContent("energy", Component.translatable("screen.extendedae_plus.entity_speed_ticker.energy", Platform.formatPower(0.0, false))); + setTextContent("power_ratio", Component.translatable("screen.extendedae_plus.entity_speed_ticker.power_ratio", PowerUtils.formatPercentage(0.0))); + setTextContent("multiplier", Component.translatable("screen.extendedae_plus.entity_speed_ticker.multiplier", String.format("%.2fx", 0.0))); + return; + } + int energyCardCount = getMenu().energyCardCount; double multiplier = getMenu().multiplier; int effectiveSpeed = getMenu().effectiveSpeed; diff --git a/src/main/resources/assets/ae2/screens/entity_speed_ticker.json b/src/main/resources/assets/ae2/screens/entity_speed_ticker.json index 7654c5e..e30da1a 100644 --- a/src/main/resources/assets/ae2/screens/entity_speed_ticker.json +++ b/src/main/resources/assets/ae2/screens/entity_speed_ticker.json @@ -23,6 +23,13 @@ "top": 6 } }, + "enable": { + "position": { + "top": 20, + "left": 88 + }, + "align": "CENTER" + }, "speed": { "position": { "top": 35, diff --git a/src/main/resources/assets/extendedae_plus/lang/en_us.json b/src/main/resources/assets/extendedae_plus/lang/en_us.json index f2cee26..fb6c9f3 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -45,6 +45,7 @@ "extendedae_plus.pattern.hovertext.player": "Encoded by %s", "item.extendedae_plus.entity_speed_ticker": "Entity Speed Ticker", + "screen.extendedae_plus.entity_speed_ticker.enable": "§c§lThe machine has been disabled", "screen.extendedae_plus.entity_speed_ticker.energy": "Energy Usage: %s FE/t", "screen.extendedae_plus.entity_speed_ticker.power_ratio": "Power ratio: %s", "screen.extendedae_plus.entity_speed_ticker.speed": "Current speed multiplier: %d", diff --git a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json index 177bf6d..0347d13 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -45,6 +45,7 @@ "extendedae_plus.pattern.hovertext.player": "由 %s 编码", "item.extendedae_plus.entity_speed_ticker": "实体加速器", + "screen.extendedae_plus.entity_speed_ticker.enable": "§c§l机器已被禁用", "screen.extendedae_plus.entity_speed_ticker.energy": "能耗: %s FE/t", "screen.extendedae_plus.entity_speed_ticker.power_ratio": "功耗比例: %s", "screen.extendedae_plus.entity_speed_ticker.speed": "当前加速倍率: %d", diff --git a/src/main/resources/assets/extendedae_plus/models/item/entity_speed_card_x1.json b/src/main/resources/assets/extendedae_plus/models/item/entity_speed_card_x1.json deleted file mode 100644 index 1107187..0000000 --- a/src/main/resources/assets/extendedae_plus/models/item/entity_speed_card_x1.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "item/generated", - "textures": { "layer0": "extendedae_plus:item/entity_speed_card_x2" } -} - - diff --git a/src/main/resources/assets/extendedae_plus/models/item/entity_speed_ticker.json b/src/main/resources/assets/extendedae_plus/models/item/entity_speed_ticker.json index 43a1e58..51789c2 100644 --- a/src/main/resources/assets/extendedae_plus/models/item/entity_speed_ticker.json +++ b/src/main/resources/assets/extendedae_plus/models/item/entity_speed_ticker.json @@ -1,6 +1,7 @@ { "parent": "ae2:item/cable_interface", "textures": { - "front": "extendedae_plus:part/entity_speed_ticker_font" + "front": "extendedae_plus:part/entity_speed_ticker_font", + "back": "extendedae_plus:part/entity_speed_ticker_back" } } \ No newline at end of file