编辑 level.dat 中的游戏规则

支持 Minecraft 基岩版和 Java 版,也支持两者所有常见或少见的服务端核心:Vanilla、Paper、Spigot、Purpur、Folia、Fabric、Forge、NeoForge、Mohist、Sponge、Bedrock Dedicated Server、PocketMine-MP、Nukkit、PowerNukkitX、Cloudburst、Dragonfly、Endstone、LeviLamina 等。完整列表。

游戏规则保存在 level.dat 中,因此无需加载世界或启用作弊即可修改。世界无法启动、作弊关闭,或在玩家加入前准备世界副本时,这种方法很有用。Java 将规则作为字符串保存在 GameRules 复合标签中;基岩版则把每条规则作为独立的小写 byte 标签保存在根标签中。

keepInventorydoDaylightCyclemobGriefingcommandBlockOutputrandomTickSpeed

将level.dat拖放到这里

level.dat · .nbt · .mcstructure · .schem · .schematic · .dat · 区块转储数据

Java:由字符串组成的 GameRules 复合标签

在 Java 版中,Data → GameRules 为每条规则保存一个 TAG_String,键名与 /gamerule 使用的准确名称相同,值以文本写入:"true"、"false" 或数字。世界从未设置过的规则不会出现,而是采用默认值;以正确名称添加字符串标签,效果与执行命令完全相同。

规则值效果
keepInventory"true"死亡后保留物品
doDaylightCycle"false"冻结昼夜时间
doWeatherCycle"false"冻结天气
mobGriefing"false"阻止苦力怕和末影人改变方块
doMobSpawning"false"停止生物自然生成
doFireTick"false"火焰停止蔓延
commandBlockOutput"false"关闭命令方块聊天输出
randomTickSpeed"3"作物生长和火焰蔓延速度
playersSleepingPercentage"50"跳过夜晚所需的玩家比例
spawnRadius"10"出生区域的分布范围

大小写会影响结果。Java 文件中的 keepinventory 与 keepInventory 不是同一标签,前者会被忽略。

基岩版:独立的小写 byte 标签

基岩版不会将规则分组。每条规则都是一个 TAG_Byte,位于 level.dat 根标签中,名称使用小写,值为 1 或 0:keepinventory、domobspawning、domobloot、dodaylightcycle、doweathercycle、mobgriefing、firedamage、falldamage、drowningdamage、pvp、showcoordinates、commandblockoutput、sendcommandfeedback、naturalregeneration、tntexplodes、respawnblocksexplode、showdeathmessages、doimmediaterespawn。randomtickspeed 和 functioncommandlimit 等数值规则则使用 TAG_Int。

设置尚不存在的规则时,需要添加正确类型的标签:开关使用 Byte,数值使用 Int。使用错误类型保存的规则会被忽略,或导致世界拒绝加载。

何时编辑文件比执行命令更合适

  • 作弊已关闭,而你不希望为了执行一条命令反复开启和关闭作弊。
  • 世界无法加载,可以在首次加入前设置 doImmediateRespawn 等规则。
  • 正在准备模板世界,该世界将复制到多台服务器,需要把规则直接写入副本。
  • 插件修改过规则,你希望查看文件中实际保存的值,而不是命令报告的值。
  • 批量修改。对多个世界设置十几条规则时,编辑文件比在聊天中逐条输入更快。

与任何 level.dat 编辑一样,请先停止服务器;运行中的世界会在保存时重写文件并丢弃修改。

常见问题

为什么 Java 中的游戏规则保存为字符串?

Java 对所有游戏规则都使用字符串存储,包括布尔值和数字。请写入 "true",而不是值为 1 的 byte。

为什么基岩版使用 byte?

基岩版将开关作为根标签中的 byte 标签保存,数值规则则保存为 int。不存在 GameRules 复合标签。

某条规则在文件中完全不存在。

这表示它使用默认值。按准确名称和正确类型添加标签,世界就会采用你设置的值。

复制世界文件夹时会复制游戏规则吗?

会。规则保存在 level.dat 中,因此复制出的世界会继承这些规则,也会继承旧的世界名称。

相关工具