You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Minecraft插件开发:基于布尔值动态配置颜色的代码优化问询

优化Minecraft插件设置项的动态颜色赋值与代码复用

问题背景

当玩家触发/settings指令时,需要展示可控制的设置项及对应的布尔状态(true/false),并根据状态为文本配置对应颜色(启用为绿色§a,禁用为红色§c)。当前实现能正常运行,但每个设置项都编写重复的颜色判断与消息发送代码,导致代码冗余、可读性差,希望找到更动态的优化方案。

原始冗余代码示例

String BlockBreakingColor = "§7";

Boolean BlockBreakValue = plugin.getConfig().getBoolean("settings.block-break");

if(BlockBreakValue) {
    BlockBreakingColor = "§a";
} else {
    BlockBreakingColor = "§c";
}

p.sendMessage("§8» §7block-breaking §8- " + BlockBreakingColor + BlockBreakValue.toString());

优化方案

1. 提取通用颜色判断逻辑

首先把根据布尔值获取对应颜色代码的逻辑封装成工具方法,避免重复编写if-else:

// 工具方法:根据布尔状态返回对应颜色代码
private String getStatusColor(boolean isEnabled) {
    return isEnabled ? "§a" : "§c";
}

2. 集中管理设置项并批量处理

将所有设置项的配置键和显示名称集中管理,通过循环批量处理每个设置项,彻底消除重复代码。

方式一:使用数组(兼容低版本Java)

// 集中定义所有设置项:[配置键, 显示名称]
String[][] settingsList = {
    {"settings.block-break", "block-breaking"},
    {"settings.entity-interact", "entity-interact"},
    {"settings.auto-pickup", "auto-pickup"}
    // 新增设置项直接添加新数组元素即可
};

// 遍历处理每个设置项
for (String[] setting : settingsList) {
    String configKey = setting[0];
    String displayName = setting[1];
    boolean status = plugin.getConfig().getBoolean(configKey);
    String statusColor = getStatusColor(status);
    
    p.sendMessage("§8» §7" + displayName + " §8- " + statusColor + status);
}

方式二:使用Record(Java 16+,更优雅)

如果项目使用Java 16及以上版本,推荐用Record封装设置项信息,可读性更强:

// 定义Setting记录类,存储配置键和显示名称
private record Setting(String configKey, String displayName) {}

// 初始化所有设置项列表
List<Setting> settings = List.of(
    new Setting("settings.block-break", "block-breaking"),
    new Setting("settings.entity-interact", "entity-interact"),
    new Setting("settings.auto-pickup", "auto-pickup")
);

// 批量处理设置项
for (Setting setting : settings) {
    boolean status = plugin.getConfig().getBoolean(setting.configKey());
    String statusColor = getStatusColor(status);
    
    p.sendMessage("§8» §7" + setting.displayName() + " §8- " + statusColor + status);
}

优化优势

  • 代码复用性:新增设置项只需在列表中添加条目,无需重复编写颜色判断和消息发送逻辑
  • 可读性:所有设置项集中管理,逻辑清晰,便于维护
  • 性能:消除冗余代码,无额外性能开销,执行效率与原代码一致

内容的提问来源于stack exchange,提问作者T I M O N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:24:17