From fc25e2bd1c827d27bb91a99ccbce1a2b17b999eb Mon Sep 17 00:00:00 2001 From: C-H716 <1536152356@qq.com> Date: Fri, 26 Sep 2025 22:09:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=9E=E4=BD=93=E5=8A=A0=E9=80=9F?= =?UTF-8?q?=E5=99=A8=E7=95=8C=E9=9D=A2=E6=98=BE=E7=A4=BA=E8=83=BD=E9=87=8F?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=85=85=E8=B6=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ae/menu/EntitySpeedTickerMenu.java | 44 ++++++++++++----- .../ae/parts/EntitySpeedTickerPart.java | 47 ++++++++++++++----- .../ae/screen/EntitySpeedTickerScreen.java | 7 +++ .../ae2/screens/entity_speed_ticker.json | 3 +- .../assets/extendedae_plus/lang/en_us.json | 1 + .../assets/extendedae_plus/lang/zh_cn.json | 1 + 6 files changed, 78 insertions(+), 25 deletions(-) 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 e72e8ce..40e1e28 100644 --- a/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java +++ b/src/main/java/com/extendedae_plus/ae/menu/EntitySpeedTickerMenu.java @@ -36,6 +36,28 @@ public class EntitySpeedTickerMenu extends UpgradeableMenu partItem) { @@ -81,18 +75,42 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka .setIdlePowerUsage(1) .addService(IGridTickable.class, this); } + // 当前打开的菜单实例(如果有) + public EntitySpeedTickerMenu menu; + // 控制是否启用加速(默认启用) + private boolean accelerateEnabled = true; + // 标记网络中能量是否充足(用于 GUI 提示,默认充足) + private boolean networkEnergySufficient = true; public boolean getAccelerateEnabled() { return this.accelerateEnabled; } + public boolean isNetworkEnergySufficient() { + return this.networkEnergySufficient; + } + public void setAccelerateEnabled(boolean accelerateEnabled) { this.accelerateEnabled = accelerateEnabled; } + /** + * 更新网络能量充足标记并在菜单存在且状态变化时触发同步 + * @param sufficient 是否能量充足 + */ + private void updateNetworkEnergySufficient(boolean sufficient) { + // 保持部件内部状态一致(部件为权威来源) + this.networkEnergySufficient = sufficient; + if (this.menu != null) { + try { + // 使用菜单的封装方法更新并广播,以保持封装性 + this.menu.setNetworkEnergySufficient(sufficient); + } catch (Exception ignored) {} + } + } + /** * 获取当前状态下的静态模型(用于渲染) - * * @return 当前状态的模型 */ public IPartModel getStaticModels() { @@ -105,8 +123,6 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka } } - - /** * 当玩家激活部件(右键)时调用,打开自定义菜单 * @@ -239,14 +255,21 @@ public class EntitySpeedTickerPart extends UpgradeablePart implements IGridTicka requiredPower *= multiplier; - // 先模拟提取以检查网络中是否有足够能量,再真正抽取 +// 先模拟提取以检查网络中是否有足够能量,再真正抽取 double simulated = getMainNode().getGrid().getEnergyService() .extractAEPower(requiredPower, Actionable.SIMULATE, PowerMultiplier.CONFIG); - if (simulated < requiredPower) return; + if (simulated < requiredPower) { + updateNetworkEnergySufficient(false); // 能量不足 + return; + } double extractedPower = getMainNode().getGrid().getEnergyService() .extractAEPower(requiredPower, Actionable.MODULATE, PowerMultiplier.CONFIG); - if (extractedPower < requiredPower) return; + if (extractedPower < requiredPower) { + updateNetworkEnergySufficient(false); // 能量不足 + return; + } + updateNetworkEnergySufficient(true); // 能量充足 // 计算加速倍数:基于 2 的次方,并把 8 张映射到最大 1024x(2^10) // 已由 product 计算得到 speed;上面已在没有卡时提前返回 diff --git a/src/main/java/com/extendedae_plus/ae/screen/EntitySpeedTickerScreen.java b/src/main/java/com/extendedae_plus/ae/screen/EntitySpeedTickerScreen.java index 32421e2..30605bb 100644 --- a/src/main/java/com/extendedae_plus/ae/screen/EntitySpeedTickerScreen.java +++ b/src/main/java/com/extendedae_plus/ae/screen/EntitySpeedTickerScreen.java @@ -128,6 +128,13 @@ public class EntitySpeedTickerScreen extends Up double finalPower = PowerUtils.computeFinalPowerForProduct(effectiveSpeed, energyCardCount); double remainingRatio = PowerUtils.getRemainingRatio(energyCardCount); + // 如果网络能量不足,优先显示警告信息并在能量值处显示 0 + if (!getMenu().networkEnergySufficient) { + setTextContent("enable", Component.translatable("screen.extendedae_plus.entity_speed_ticker.warning_network_energy_insufficient")); + }else { + setTextContent("enable", null); + } + setTextContent("speed", Component.translatable("screen.extendedae_plus.entity_speed_ticker.speed", effectiveSpeed)); setTextContent("energy", Component.translatable("screen.extendedae_plus.entity_speed_ticker.energy", Platform.formatPower(finalPower, false))); setTextContent("power_ratio", Component.translatable("screen.extendedae_plus.entity_speed_ticker.power_ratio", PowerUtils.formatPercentage(remainingRatio))); 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 aaeab6c..352842a 100644 --- a/src/main/resources/assets/ae2/screens/entity_speed_ticker.json +++ b/src/main/resources/assets/ae2/screens/entity_speed_ticker.json @@ -51,8 +51,7 @@ "left": 88 }, "align": "CENTER" - } - , + }, "multiplier": { "position": { "top": 80, 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 8775525..c8d3754 100644 --- a/src/main/resources/assets/extendedae_plus/lang/en_us.json +++ b/src/main/resources/assets/extendedae_plus/lang/en_us.json @@ -53,6 +53,7 @@ "screen.extendedae_plus.entity_speed_ticker.power_ratio": "Power Ratio: %s", "screen.extendedae_plus.entity_speed_ticker.speed": "Current Acceleration Multiplier: %d", "screen.extendedae_plus.entity_speed_ticker.multiplier": "Additional Consumption Multiplier: %s", + "screen.extendedae_plus.entity_speed_ticker.warning_network_energy_insufficient": "§c§lInsufficient network energy", "item.extendedae_plus.entity_speed_ticker.tip.requirement": "Requires Entity Speed Card to Enable Acceleration", "item.extendedae_plus.entity_speed_ticker.tip.max": "Up to 1024x Acceleration", 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 fe2d4a8..3df2054 100644 --- a/src/main/resources/assets/extendedae_plus/lang/zh_cn.json +++ b/src/main/resources/assets/extendedae_plus/lang/zh_cn.json @@ -53,6 +53,7 @@ "screen.extendedae_plus.entity_speed_ticker.power_ratio": "功耗比例: %s", "screen.extendedae_plus.entity_speed_ticker.speed": "当前加速倍率: %d", "screen.extendedae_plus.entity_speed_ticker.multiplier": "额外消耗倍率: %s", + "screen.extendedae_plus.entity_speed_ticker.warning_network_energy_insufficient": "§c§l网络能量不足", "item.extendedae_plus.entity_speed_ticker.tip.requirement": "需要放入实体加速卡以启用加速", "item.extendedae_plus.entity_speed_ticker.tip.max": "最高可达 1024x 加速",