服务端配置项
基本信息
| 属性 |
值 |
| 配置类 |
serverutils.ServerUtilitiesConfig |
| 源码 |
src/main/java/serverutils/ServerUtilitiesConfig.java:23-847 |
| 字段总数 |
138(全部 public,全部带 @Config.Default*) |
| 本页覆盖 |
109(不含 Commands 的 29 条,见 指令开关配置) |
| 顶层分组 |
17 个(:28-46) |
| 配置系统 |
GTNHLib com.gtnewhorizon.gtnhlib.config.Config |
| 目录 |
configSubDirectory = "../serverutilities/"(:23) |
计数方法
字段数用三种独立方式交叉验证,结果一致为 138:
| 方法 |
结果 |
grep -c "@Config\.Default" ServerUtilitiesConfig.java |
138 |
@Config.Default* 注解类型求和(101 bool + 4 double + 5 enum + 1 float + 12 int + 1 intList + 6 string + 8 stringList) |
138 |
逐行匹配「public + 非 static final + 非 class」字段并检查其前 8 行内是否有 @Config.Default* |
138(全部字段 100% 覆盖) |
@Config.Ignore 标注的字段(如 AFK.notificationTimer、Login.motdComponents)全部是 private,不出现在统计中。
分组分布
| 分组 |
行 |
字段数 |
本页 |
general |
48-68 |
4 |
✓ |
teams |
70-100 |
7 |
✓ |
debugging |
102-143 |
10 |
✓ |
auto_shutdown |
145-163 |
3 |
✓ |
afk |
165-195 |
3 |
✓ |
chat |
197-206 |
2 |
✓ |
commands |
208-297 |
29 |
见 指令开关配置 |
backups |
299-367 |
14 |
✓ |
login |
369-430 |
4 |
✓ |
ranks |
432-446 |
3 |
✓ |
world |
448-713 |
36 |
✓ |
tasks.cleanup |
715-750 |
7 |
✓ |
pregen |
752-765 |
2 |
✓ |
mixins |
768-789 |
4 |
✓ |
motd |
791-807 |
3 |
✓ |
transfer |
809-818 |
2 |
✓ |
tab |
820-846 |
5 |
✓ |
[!IMPORTANT]
WorldConfig 的 36 个字段分散在 3 层:本体 24 个、WorldLogging 子类 9 个(:450-493)、RulesFlip 子类 3 个(:497-515)。world.flip 字段以 @Config.Name("flip_game_rules_when_empty") 暴露(:517),world.logging 字段是 final 对象(:495)。
各类配置项
general(4 项)
| 字段 |
行 |
类型 |
默认 |
说明 |
merge_offline_mode_players |
53 |
EnumTristate |
TRUE |
合并离线模式玩家的 profile;DEFAULT 表示仅单人游戏合并 |
enable_pause_when_empty_property |
57 |
boolean |
true |
回移植 1.20 的 pause-when-empty-seconds |
enable_max_tick_time_property |
63 |
boolean |
true |
回移植 1.8 的 max-tick-time |
enable_toggle_cheats_button |
67 |
boolean |
true |
世界选择界面加「切换作弊」按钮 |
teams(7 项)
| 字段 |
行 |
默认 |
说明 |
disable_teams |
75 |
false |
完全禁用队伍 |
autocreate_mp |
79 |
false |
多人游戏按用户名+随机色自动建队 |
autocreate_sp |
83 |
true |
单人/LAN 自动建或加入 ID 为 singleplayer 的队 |
hide_team_notification |
87 |
false |
隐藏「无队伍」提示 |
grief_protection |
91 |
true |
领地内禁止他人破坏方块 |
interaction_protection |
95 |
true |
领地内禁止他人交互方块 |
force_team_prefix |
99 |
false |
强制聊天前缀为队名 |
disable_teams 带 @Config.Sync(:74)。
debugging(10 项)
全部默认 false。
| 字段 |
行 |
说明 |
special_commands |
106 |
启用调试指令(控制 /add_fake_player) |
print_more_info |
110 |
输出更多信息 |
print_more_errors |
114 |
输出更多错误 |
log_network |
118 |
记录收发网络封包 |
log_teleport |
122 |
记录玩家传送 |
log_config_editing |
126 |
记录配置编辑 |
dev_sidebar_buttons |
130 |
显示仅开发用的侧边栏按钮 |
gui_widget_bounds |
134 |
按住 B 显示 GUI 控件边界 |
log_events |
138 |
记录所有 EventBase 事件 |
log_chunkloading |
142 |
每次区块强制加载/卸载都打控制台(注释明确建议关闭,防刷屏) |
auto_shutdown(3 项)
| 字段 |
行 |
类型 |
默认 |
说明 |
enabled |
150 |
boolean |
false |
启用定时关机 |
enabled_singleplayer |
155 |
boolean |
false |
单人世界也启用 |
times |
162 |
String[] |
{"04:00", "16:00"} |
HH:MM 格式,取最近的未匹配时刻 |
enabled 与 enabled_singleplayer 复用 serverutilities.config.enabled 语言键(:149、:154)。
afk(3 项)
| 字段 |
行 |
类型 |
默认 |
说明 |
enabled |
170 |
boolean |
true |
启用 AFK 计时 |
enabled_singleplayer |
175 |
boolean |
true |
单人世界也启用 |
notification_timer |
179 |
String |
"5m" |
超时多久后向全体广播 |
getNotificationTimer()(:188-194)惰性地用 Ticks.get(notification_timer).millis() 解析并缓存到 @Config.Ignore private long notificationTimer(:181-182)。
chat(2 项)
| 字段 |
行 |
默认 |
说明 |
add_nickname_tilde |
201 |
false |
改过昵称的玩家名前加 ~ 防钓鱼 |
replace_tab_names |
205 |
true |
TAB 列表显示聊天中使用的昵称 |
backups(14 项)
| 字段 |
行 |
类型 |
默认 |
范围 |
说明 |
enable_backups |
303 |
boolean |
true |
— |
启用备份 |
backup_timer |
308 |
double |
0.5 |
min=0 |
备份间隔(小时),0.5 = 每 30 分钟 |
backups_to_keep |
313 |
int |
12 |
min=1 |
保留的备份数 |
compression_level |
318 |
int |
1 |
0..9 |
0 不压缩,1 最快,9 最小 |
backup_folder_path |
322 |
String |
"./backups/" |
— |
备份目录 |
additional_backup_files |
326 |
String[] |
{"saves/NEI/global/**", "saves/NEI/local/$WORLDNAME/**"} |
— |
额外打包路径 |
use_separate_thread |
330 |
boolean |
true |
— |
独立线程执行(注释标注「推荐」) |
display_file_size |
334 |
boolean |
true |
— |
完成后打印(当前大小 | 总大小) |
need_online_players |
338 |
boolean |
true |
— |
无玩家在线时跳过备份 |
silent_backup |
342 |
boolean |
false |
— |
除严重错误外静默 |
max_folder_size |
349 |
int |
0 |
min=0 |
备份目录上限 GB;0 = 禁用改用 backups_to_keep |
delete_custom_name_backups |
353 |
boolean |
true |
— |
删除 /backup start <name> 起的自定义名备份 |
only_backup_claimed_chunks |
359 |
boolean |
false |
— |
只备份已领取区块(更快更小,未领取区块不可恢复) |
backup_entire_regions_with_claims |
366 |
boolean |
false |
— |
整区域备份完整 .mca;依赖上一项 |
additional_backup_files 的注释(:324)说明支持 / 分隔符、* 通配、$WORLDNAME 变量,指定目录须以 /** 结尾。
login(4 项)
| 字段 |
行 |
类型 |
默认 |
说明 |
enable_motd |
373 |
boolean |
false |
启用进服欢迎语 |
enable_starting_items |
377 |
boolean |
false |
启用初始物品 |
motd |
382 |
String[] |
{"Hello player!"} |
欢迎语行 |
starting_items |
387 |
String[] |
{id:"minecraft:stone_sword",Count:1,Damage:1,tag:{display:{Name:"Epic Stone Sword"}}} |
初始物品 NBT |
motd 带 @Config.Reloadable("login_motd")(:380),可单独重载。getStartingItems()(:409-429)逐条用 ItemStackSerializer.parseItem 解析,失败只打 LOGGER.warn 不中断(:421-423),结果缓存在 @Config.Ignore private List<ItemStack> startingItems(:392-393)。
ranks(3 项)
| 字段 |
行 |
默认 |
说明 |
enabled |
437 |
true |
启用 Rank 权限体系 |
override_chat |
441 |
true |
覆盖聊天颜色/等级专属格式 |
command_permissions |
445 |
true |
为指令添加权限节点,交由 rank 控制 |
world(36 项)
本体字段(24 项)
| 字段 |
行 |
类型 |
默认 |
范围/说明 |
chunk_claiming |
523 |
boolean |
true |
启用领地(带 @Config.Sync) |
chunk_loading |
527 |
boolean |
true |
启用区块强制加载;chunk_claiming 为 false 时无效 |
safe_spawn |
531 |
boolean |
false |
出生点保护:禁爆炸与敌对生物、禁玩家互伤 |
spawn_area_in_sp |
535 |
boolean |
false |
单人世界也启用出生点区域 |
blocked_claiming_dimensions |
539 |
int[] |
{} |
禁止领地的维度 ID |
enable_pvp |
547 |
EnumTristate |
DEFAULT |
DEFAULT=玩家自选 / TRUE=全开 / FALSE=全关 |
enable_explosions |
555 |
EnumTristate |
DEFAULT |
同上语义,针对爆炸 |
enable_endermen |
564 |
EnumTristate |
DEFAULT |
需 chunk_claiming 与 mixins.endermen 同时为真 |
spawn_radius |
568 |
int |
0 |
注释要求把 server.properties 的 spawn-protection 设为 0 |
spawn_dimension |
572 |
int |
0 |
出生点维度,默认主世界 |
unload_erroring_chunks |
576 |
boolean |
false |
维度未加载等问题导致报错时卸载区块 |
rtp_min_distance |
580 |
double |
1000D |
/rtp 最小距离 |
rtp_max_distance |
584 |
double |
100000D |
/rtp 最大距离 |
rtp_max_tries |
588 |
int |
200 |
/rtp 最大尝试次数 |
disabled_right_click_items |
595 |
String[] |
{""} |
语法 modid:item:metadata,metadata 填 * 忽略;实际解析按 @ 切分(见下) |
forced_spawn_dimension_time |
606 |
int |
-1 |
min=-1, max=23999;-1 禁用 / 0 早晨 / 6000 正午 / 12000 傍晚 / 18000 午夜 |
forced_spawn_dimension_weather |
616 |
int |
-1 |
min=-1, max=2;-1 禁用 / 0 晴 / 1 雨 / 2 雷暴 |
disable_player_suffocation_damage |
620 |
boolean |
false |
卡墙时不受伤害 |
show_playtime |
624 |
boolean |
false |
角落显示游戏时间 |
enable_player_sleeping_percentage |
629 |
boolean |
true |
启用睡觉百分比跳过夜晚 |
player_sleeping_percentage |
634 |
int |
50 |
0..100;仅是 gamerule 的初始值,非生效值 |
vampire_sleep_percent |
639 |
int |
50 |
0..100;棺材中吸血鬼需达到的百分比 |
blockMobSpawningInClaims |
647 |
EnumTristate |
DEFAULT |
领地内是否阻止刷怪 |
mobTypesToBlock |
654 |
String[] |
{"AMBIENT","WATER_CREATURE","MOB","ANIMAL"} |
仅 blockMobSpawningInClaims=TRUE 时生效 |
[!WARNING]
disabled_right_click_items 的配置注释说语法是 modid:item:metadata(:591-593),但实际解析代码用 s.split("@", 2)(:684)——即真正生效的分隔符是 @ 而非 :。这是注释与实现不一致,按实现为准。
enable_player_sleeping_percentage 带 @Config.ModDetectedDefault(coremod = "ganymedes01.etfuturum.mixinplugin.EtFuturumEarlyMixins", value = "false")(:628)—— 检测到 Et Futurum 时默认值自动改为 false(因为该模组自带同功能)。
world.logging(9 项,ServerUtilitiesConfig.java:450-493)
| 字段 |
行 |
默认 |
说明 |
enabled |
455 |
false |
启用世界日志 |
include_creative_players |
459 |
false |
记录创造模式玩家 |
include_fake_players |
463 |
false |
记录假玩家 |
block_placed |
467 |
true |
记录放方块 |
block_broken |
471 |
true |
记录破坏方块 |
item_clicked_in_air |
475 |
true |
记录空中点击物品 |
entity_attacked |
479 |
true |
记录攻击其他玩家/实体 |
exclude_mob_entity |
483 |
true |
排除生物 |
chat_enable |
487 |
false |
记录聊天 |
log(EntityPlayerMP)(:489-492)是统一的判定入口:enabled && (include_creative_players || 非创造) && (include_fake_players || 非假玩家)。
world.flip(3 项,暴露名 flip_game_rules_when_empty,:497-518)
| 字段 |
行 |
类型 |
默认 |
范围 |
enable_flip_game_rules_when_empty |
503 |
boolean |
false |
服务器空时翻转指定游戏规则 |
flip_game_rules_when_empty_seconds |
508 |
int |
60 |
0..86400 |
flip_game_rules_when_empty_rules |
514 |
String[] |
{""} |
规则名,如 doDaylightCycle, doWeatherCycle |
:499-501 的注释警告:翻转状态在重启后保留,禁用该功能前应先在未翻转状态下停服。
tasks.cleanup(7 项,ServerUtilitiesConfig.java:715-750)
| 字段 |
行 |
类型 |
默认 |
说明 |
enabled |
722 |
boolean |
false |
启用定期实体清理 |
interval |
726 |
double |
2 |
清理间隔(小时) |
hostiles |
730 |
boolean |
true |
清理敌对生物 |
passives |
734 |
boolean |
false |
清理友好生物 |
items |
738 |
boolean |
true |
清理地面掉落物 |
experience |
742 |
boolean |
true |
清理经验球 |
silent |
746 |
boolean |
false |
静默清理前的警告 |
pregen(2 项)
| 字段 |
行 |
类型 |
默认 |
说明 |
chunksPerTick |
756 |
int |
1 |
每 tick 排队生成多少区块 |
timeLimitMs |
760 |
float |
25 |
每 tick 预生成时间上限(毫秒);注释指出区块卸载耗时不受此限制 |
timeLimitNanos()(:762-764)做 timeLimitMs * 1_000_000 转换。
mixins(4 项,@Config.RequiresMcRestart,:767-789)
| 字段 |
行 |
默认 |
说明 |
endermen |
776 |
true |
启用地中海幽灵行为 Mixin(world.enable_endermen 的前置) |
bypassPlayerLimit |
780 |
true |
添加 serverutilities.bypass_player_limit 节点 |
farmlandTramplingProtection |
784 |
true |
让防破坏保护也覆盖耕地踩踏 |
modernTabOverlay |
788 |
true |
现代风格 TAB 覆盖层(玩家头颅、动态列、header/footer) |
mixins.modernTabOverlay 是互斥开关:REPLACE_TAB_NAMES 的 setApplyIf 是 !mixins.modernTabOverlay(mixin/Mixins.java),MODERN_TAB_OVERLAY 的 setApplyIf 是 mixins.modernTabOverlay。
motd(3 项)
| 字段 |
行 |
类型 |
默认 |
说明 |
enabled |
796 |
boolean |
false |
启用自定义服务器 MOTD |
line1 |
801 |
String |
§6§lMy Minecraft Server |
支持颜色码与 {players} {maxPlayers} {tps} {memory} {uptime} |
line2 |
806 |
String |
§aUptime: §f{uptime} §7| §bTPS: §f{tps} |
同上 |
line1/line2 都带 @Config.Reloadable("server_motd")(:800、:805)。
transfer(2 项)
| 字段 |
行 |
类型 |
默认 |
说明 |
enabled |
813 |
boolean |
true |
启用 /transfer 指令与切换封包 |
whitelist |
817 |
String[] |
{} |
允许的主机名白名单;空 = 全部允许 |
tab(5 项,全部带 @Config.Sync)
| 字段 |
行 |
类型 |
默认 |
说明 |
showPlayerHeads |
825 |
boolean |
true |
显示玩家头颅图标 |
showPingNumber |
830 |
boolean |
true |
显示数字延迟(如 42ms) |
showPingBars |
835 |
boolean |
true |
显示信号格 |
headerText |
840 |
String |
&b&lGTNH Server\n&7A modern tab list for 1.7.10 |
用 & 颜色码,\n 换行;可被代理插件频道覆盖 |
footerText |
845 |
String |
&7Ping: &a< 150ms &e< 300ms &c< 600ms &4< 1000ms &8>= 1000ms\n&8Powered by &dServerUtilities |
同上 |
外部读取者
按「声明 → 赋值 → 是否有外部读取」三段核验,全部 138 个字段都通过 GTNHLib ConfigurationManager.registerConfig(ServerUtilitiesConfig.class)(core/ServerUtilitiesCore.java:24)反射生成配置文件,并由以下外部读取者消费:
ServerUtilitiesCommands.registerCommands(command/ServerUtilitiesCommands.java:28-175)读 commands.*、auto_shutdown.enabled、general.enable_pause_when_empty_property、transfer.enabled、debugging.special_commands
serverutils.mixin.Mixins 枚举的各 setApplyIf lambda 读 ranks.enabled、ranks.command_permissions、mixins.*、commands.back、commands.vanish、motd.enabled、world.enable_player_sleeping_percentage、general.enable_pause_when_empty_property、general.enable_max_tick_time_property、general.enable_toggle_cheats_button
task/backup/BackupTask、task/CleanupTask、task/ShutdownTask、task/DecayTask 读 backups.*、tasks.cleanup.*、auto_shutdown.*、afk.*
WitcheryCompat / Mixins.CANCEL_VAMPIRE_WAKEUP_EVENT 读 world.vampire_sleep_percent
client/ServerUtilitiesClient 与 client/gui/* 读 tab.*(经 @Config.Sync 下发)
相关条目