GlymeraGameMode

GlymeraGameMode

为每个世界赋予专属游戏模式:玩家进入已列出的世界时切换为创造或冒险模式,离开时恢复原有模式。严格按配置选择性启用,即时保护,无依赖。

生活质量

GlymeraGameMode

让每个世界拥有自己的游戏模式——每种模式拥有独立的物品栏。 GlymeraGameMode 允许你按世界声明玩家在其中应处于创造冒险模式。进入世界——你的模式随之切换。离开——之前的模式自动恢复。配合默认可用的模式分离物品栏,玩家在创造模式获取的物品永远不会泄漏到冒险模式中。非常适合在生存风格主世界旁打造创造建筑世界或剧情世界、应始终保持冒险模式的服务器大厅,或供所有人自由建造的活动世界。

Hytale 本身无法实现此功能:玩家的游戏模式是全局性的,会跟随他们跨越所有世界(世界配置中的 GameMode 字段仅适用于从未设定过模式的全新玩家)。此插件填补了这一缺失功能——仅此而已。它刻意保持轻量小巧。

工作原理

  • 你在配置中(或通过游戏内命令)列出世界,每个世界指定目标模式:CreativeAdventure
  • 玩家进入已列出的世界时,会被切换至该世界的模式。他们之前的模式会被记住。
  • 玩家进入任何未列出的世界时,会恢复他们被记住的模式。
  • 在两个已列出的世界间跳转时,会保留最初记住的模式——只有在离开受管区域时才会恢复。
  • 切换至冒险模式在到达时立即生效,确保来自上一个世界的创造能力不会在可能被滥用的环境中残留。切换至创造模式则会在玩家周围世界加载完成后稍作延迟再授予。

每种游戏模式一个物品栏

启用 separateInventories(默认开启)后,每位玩家拥有两个物品栏:一个用于冒险模式,一个用于创造模式。每次模式切换——无论是由世界规则触发,还是由管理员的 /gamemode 命令触发——当前物品栏会存储在旧模式下,并加载新模式的物品栏。首次进入创造模式?从空物品栏开始,创造模式物品目录就在那里。回到冒险模式?真实物品和离开时完全一致地返回,创造模式的物品会消失(它们留在你的创造物品栏中等待)。

物品栏使用Hytale 自身的物品栏格式存储——与服务器用于玩家文件的序列化方式相同——因此耐久度、状态和物品数据都能完美保留。快照在实时物品栏被修改之前写入磁盘,因此即使切换中途崩溃也不会丢失物品。若只需模式切换功能,可将 separateInventories 设为 false

管理员不受此插件任何功能影响——不切换模式,不分离物品栏。管理员在所有世界中保持单一模式和单一物品栏,可不受干扰地工作。

严格选择启用

只有你列出的世界才会被管理。由其他插件运行的世界——小游戏竞技场、玩家世界、地下城实例——保持未列出状态,绝不会被干扰。对不存在世界的配置条目无害:它们永远不会匹配任何内容。

命令(仅限管理员)

  • /ggamemode — 列出所有受管世界及其模式
  • /ggamemode set <world> <Adventure|Creative> — 管理一个世界(立即生效,无需重启)
  • /ggamemode clear <world> — 停止管理一个世界
  • /ggamemode tp <world> — 传送到一个世界,必要时加载它(便于测试)

普通玩家无法更改自己的模式:Hytale 原生的 /gamemode 命令已要求 gamemode.self 权限(Builder 组及以上),此插件不会提供任何绕过方式。

配置

mods/de.glymera_GlymeraGameMode/config.json — 首次启动时创建,包含两个示例条目展示格式:

{
  "separateInventories": true,
  "worldModes": {
    "exampleworld1": "Creative",
    "exampleworld2": "Adventure"
  }
}

将示例替换为你的真实世界名称(以 /world list 显示为准)。separateInventories(默认 true)切换按模式分离物品栏功能。此文件在服务器启动时读取;通过 /ggamemode set 的游戏内更改会自动保存回文件。插件还会保留 saved-modes.json——每位玩家记住的先前模式——以及 inventories/ 下的每玩家物品栏快照,全部采用原子写入,因此崩溃永远不会导致玩家陷入错误模式或丢失物品。

安装

将 JAR 放入服务器的 mods/ 文件夹并启动服务器。编辑生成的配置(服务器停止时)或作为管理员在游戏内使用 /ggamemode set。无依赖、无资源包,适用于任何世界类型。