世界重置

世界重置

Fabric 的世界重置工具

迷你游戏

World Reset

在不关闭服务器的情况下重置服务器世界,可使用命令、计时器或自定义谓词。 计时器可通过 /worldreset stop 或停止谓词来停止。

让世界出生点设置在某特定生物群系或结构附近,微调玩家状态重置,并更改世界池大小。

与 Fabric Permissions API(由 LuckPerms、PlayerRoles 使用)以及 Predicate API 集成,以支持自定义谓词。

命令与权限

命令 权限 描述
/worldreset reset [seed] worldreset.reset 立即重置世界(可选种子,支持 "random")
/worldreset reload worldreset.reload 重新加载配置
/worldreset timer worldreset.timer 设置重置计时器(例如 "5m"、"300s")
/worldreset stop worldreset.stop 停止计时器
/worldreset seed worldreset.seed 设置种子(支持 "random")
/worldreset spawn none worldreset.spawn 禁用附近生成
/worldreset spawn structure worldreset.spawn 在结构附近生成(例如 "minecraft:stronghold")
/worldreset spawn biome worldreset.spawn 在生物群系附近生成(例如 "minecraft:plains")
/worldreset spawn offset worldreset.spawn 距目标位置的方块偏移
/worldreset spawn require_surface worldreset.spawn 要求生成时需要表面方块
/worldreset triggers list [stop|reset] worldreset.triggers 列出触发器(默认:两者)
/worldreset triggers clear [stop|reset] worldreset.triggers 清除触发器(默认:两者)
/worldreset triggers remove <stop|reset> worldreset.triggers 按索引移除触发器
/worldreset triggers add <stop|reset> portal [origin_dimension] [require_all_players] worldreset.triggers 添加传送门进入触发器(origin_dimension:例如 minecraft:overworld)
/worldreset triggers add <stop|reset> death worldreset.triggers 添加实体死亡触发器
/worldreset triggers add <stop|reset> advancement [require_all_players] worldreset.triggers 添加进度触发器
/reset [seed] worldreset.reset /worldreset reset 的别名

/wr 是 /worldreset 的别名。所有权限默认需要管理员等级 2。

时长支持秒(15/15s)、分钟(3m)、小时(2h)、天(7d)以及组合(1h30m)。

配置

{
  // 请勿修改!
  "config_version": 8,
  // 为即时重置而预加载保留的世界数量,若为 0,玩家需要被传送到 worldreset:lobby
  "pool_size": 1,
  // 每个世界预加载的区块半径(数字,或视距的百分比,例如 "50%")
  "preload_distance": "4",
  // 伪造自定义 worldreset:dimension 标识符,以显示原版 minecraft:dimension 标识符
  // 这对于依赖原版维度标识符的着色器兼容性很有用
  // 若启用,玩家会被传送到 worldreset:lobby,以避免区块相互渗透
  // 若禁用,玩家会立即被传送到下一个池中的世界,速度稍快
  "spoof_dimension": true,
  // 启用计时器倒计时音效
  "countdown_sounds": true,
  // 启用重启聊天消息
  "restart_message": true,
  // 提前停止倒计时计时器的触发器
  "stop_triggers": [
    {
      "type": "worldreset:portal_enter",
      "block": "minecraft:end_portal",
      "origin_dimension": "minecraft:the_end",
      "require_all_players": false
    },
    {
      "type": "worldreset:advancement",
      "advancement": "minecraft:nether/uneasy_alliance",
      "require_all_players": false
    }
  ],
  // 立即重置世界的触发器
  "reset_triggers": [
    {
      "type": "worldreset:entity_death",
      "entity": "minecraft:player",
      "filter": {
        "type": "entity",
        "value": {
          "type_specific": {
            "type": "player",
            "gamemode": ["survival"]
          }
        }
      }
    }
  ],
  // 支持 long、字符串或 "random" 种子
  "seed": "random",
  // 配置生成位置
  "spawn_near": {
    // 生成类型:"none"、"structure" 或 "biome"
    "type": "none",
    // 目标结构或生物群系(例如 "minecraft:stronghold"、"minecraft:plains")
    "target": "",
    // 距目标位置的方块偏移
    "offset": 0,
    // 是否要求生成时需要表面方块
    "require_surface": false
  },
  // 世界重置时重置玩家状态
  "reset_on_load": {
    // 移除所有药水效果
    "effects": false,
    // 重置生命值、氧气值、着火状态和速度
    "health": false,
    // 重置饥饿值和饱和度
    "hunger": false,
    // 重置所有游戏统计
    "statistics": false,
    // 重置所有进度
    "advancements": false,
    // 重置经验等级、点数和分数
    "experience": false,
    // 清空物品栏和末影箱内容
    "inventory": false,
    // 重置配方知识
    "recipes": false,
    // 重置玩家属性(生命值提升、速度等)
    "attributes": false,
    // 重置后应用于每个玩家的游戏模式(覆盖极限模式旁观者锁定);"none" 表示跳过
    "gamemode": "survival",
    // 设置游戏内一天中的时间(0-24000,-1 表示禁用)
    "time_of_day": -1,
    // 将天气重置为晴朗
    "clear_weather": false
  }
}

触发器类型(在 stop_triggers 和 reset_triggers 中均使用):

  • worldreset:portal_enter - 当玩家进入传送门方块时触发
    • block:传送门方块标识符(例如 minecraft:end_portal)
    • origin_dimension:可选,玩家必须所处的维度(例如要塞传送门使用 minecraft:overworld,末地出口传送门使用 minecraft:the_end)
    • require_all_players:若为 true,则所有玩家都必须进入;若为 false,则任意玩家进入即可(默认:false)
    • filter:可选的 Predicate API 谓词,用于玩家级别的匹配
  • worldreset:entity_death - 当实体死亡时触发
    • entity:实体类型标识符(例如 minecraft:ender_dragon)
    • filter:可选的 Predicate API 谓词,用于实体级别的匹配
  • worldreset:advancement - 当玩家获得进度时触发
    • advancement:进度标识符(例如 minecraft:end/kill_dragon)
    • require_all_players:若为 true,则所有玩家都必须获得;若为 false,则任意玩家获得即可(默认:false)
    • filter:可选的 Predicate API 谓词,用于玩家级别的匹配

带过滤器的示例(仅统计进入末地传送门的生存模式玩家):

{
  "type": "worldreset:portal_enter",
  "block": "minecraft:end_portal",
  "require_all_players": true,
  "filter": {
    "type": "entity",
    "value": {
      "condition": "minecraft:entity_properties",
      "predicate": { "gamemode": "survival" }
    }
  }
}

致谢