feat: 调整优化实体加速器界面显示
This commit is contained in:
parent
6d45627cbe
commit
93d0081132
33
src/main/java/com/extendedae_plus/ae/client/gui/Icon.java
Normal file
33
src/main/java/com/extendedae_plus/ae/client/gui/Icon.java
Normal file
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
@ -29,6 +29,7 @@ public class EntitySpeedTickerMenu extends UpgradeableMenu<EntitySpeedTickerPart
|
|||
// 当前计算出的生效速度(product of multipliers),同步给客户端用于显示
|
||||
@GuiSync(719) public int effectiveSpeed = 1;
|
||||
@GuiSync(720) public double multiplier = 1.0;
|
||||
@GuiSync(721) public boolean targetBlacklisted = false;
|
||||
|
||||
public boolean getAccelerateEnabled() {
|
||||
return this.accelerateEnabled;
|
||||
|
|
@ -73,8 +74,28 @@ public class EntitySpeedTickerMenu extends UpgradeableMenu<EntitySpeedTickerPart
|
|||
} catch (Exception ignored) {}
|
||||
this.multiplier = mult;
|
||||
|
||||
// 计算生效速度:使用工具类从菜单直接计算 product with cap(最多 8 张)
|
||||
this.effectiveSpeed = (int) PowerUtils.computeProductWithCapFromMenu(this, 8);
|
||||
// 检查目标是否在黑名单中,如果是则标记并将生效速度设为 0(服务器端计算)
|
||||
boolean blacklisted = false;
|
||||
try {
|
||||
BlockEntity target = getHost().getLevel().getBlockEntity(getHost().getBlockEntity().getBlockPos().relative(getHost().getSide()));
|
||||
if (target != null) {
|
||||
String blockId = ForgeRegistries.BLOCKS.getKey(target.getBlockState().getBlock()).toString();
|
||||
for (java.util.regex.Pattern p : ConfigParsingUtils.getCachedBlacklist(List.of(ModConfig.INSTANCE.entityTickerBlackList))) {
|
||||
if (p.matcher(blockId).matches()) {
|
||||
blacklisted = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception ignored) {}
|
||||
this.targetBlacklisted = blacklisted;
|
||||
|
||||
// 计算生效速度:如果被黑名单则为 0,否则进行正常计算(使用工具类从菜单直接计算 product with cap,最多 8 张)
|
||||
if (this.targetBlacklisted) {
|
||||
this.effectiveSpeed = 0;
|
||||
} else {
|
||||
this.effectiveSpeed = (int) PowerUtils.computeProductWithCapFromMenu(this, 8);
|
||||
}
|
||||
|
||||
// 如果在客户端,刷新界面
|
||||
if (isClientSide()) {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.extendedae_plus.ae.screen;
|
|||
|
||||
import appeng.api.config.Settings;
|
||||
import appeng.api.config.YesNo;
|
||||
import appeng.client.gui.Icon;
|
||||
import appeng.client.gui.implementations.UpgradeableScreen;
|
||||
import appeng.client.gui.style.ScreenStyle;
|
||||
import appeng.client.gui.widgets.CommonButtons;
|
||||
|
|
@ -41,6 +42,15 @@ public class EntitySpeedTickerScreen<C extends EntitySpeedTickerMenu> extends Up
|
|||
) {
|
||||
@Override
|
||||
public List<Component> 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<C extends EntitySpeedTickerMenu> 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<C extends EntitySpeedTickerMenu> 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<C extends EntitySpeedTickerMenu> 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;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,13 @@
|
|||
"top": 6
|
||||
}
|
||||
},
|
||||
"enable": {
|
||||
"position": {
|
||||
"top": 20,
|
||||
"left": 88
|
||||
},
|
||||
"align": "CENTER"
|
||||
},
|
||||
"speed": {
|
||||
"position": {
|
||||
"top": 35,
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
{
|
||||
"parent": "item/generated",
|
||||
"textures": { "layer0": "extendedae_plus:item/entity_speed_card_x2" }
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user