Skip to content

游戏模式控制功能文档

功能概述

游戏模式控制是 EsbpmPlugin 提供的管理功能,允许服务器管理员强制非管理员玩家使用特定的游戏模式。此功能特别适用于需要严格控制游戏体验的服务器,如冒险服务器、主题服务器或教育服务器。

配置项

游戏模式控制的配置位于插件配置文件 plugins/EsbpmPlugin/config.yml 中的 gamemode 部分:

yaml
# 游戏模式设置
gamemode:
  # 强制非管理员玩家的游戏模式 (0=生存, 1=创造, 2=冒险, 3=旁观)
  forced-mode: 2
  # 是否启用强制游戏模式功能
  enabled: true

配置说明

  • gamemode.enabled:设置为 true 时,启用强制游戏模式功能;设置为 false 时,禁用此功能
  • gamemode.forced-mode:设置要强制非管理员玩家使用的游戏模式,取值范围:
    • 0 = 生存模式(Survival)
    • 1 = 创造模式(Creative)
    • 2 = 冒险模式(Adventure)
    • 3 = 旁观模式(Spectator)

功能机制

强制应用时机

游戏模式控制功能会在以下时机强制应用配置的游戏模式:

  1. 玩家加入服务器时:玩家首次连接到服务器时,系统会检查是否启用了强制游戏模式功能,如果启用且玩家没有绕过权限,则会将其游戏模式设置为配置的模式
  2. 玩家尝试更改游戏模式时:当玩家尝试通过命令或其他方式更改游戏模式时,系统会检查其是否有权限绕过限制,如果没有,则会取消更改并将其重置为强制模式

绕过机制

玩家可以通过以下方式绕过游戏模式控制:

  • 拥有 esbpm.gamemode.bypass 权限(默认仅OP拥有)
  • 服务器管理员可以通过权限管理插件为特定玩家或组分配此权限

技术实现细节

游戏模式转换

  • 插件使用 Minecraft 的 Player.setGameMode() 方法设置玩家的游戏模式
  • 系统会通过 getGameModeName() 辅助方法将配置中的数字转换为对应的游戏模式枚举

事件处理

  • 玩家加入事件 (PlayerJoinEvent):当玩家加入服务器时,系统会检查强制游戏模式功能是否启用,如启用且玩家没有绕过权限,则设置其游戏模式
  • 游戏模式更改事件 (PlayerGameModeChangeEvent):当玩家尝试更改游戏模式时,系统会检查其是否有权限绕过限制,如果没有,则取消事件并重置游戏模式

游戏模式特性说明

各游戏模式的主要特点

模式ID模式名称主要特点适用场景
0生存模式需要收集资源,有生命值和饥饿值,受到伤害标准生存体验,生存挑战
1创造模式无限资源,飞行能力,瞬间破坏方块建筑服务器,创意构建,地图开发
2冒险模式无法破坏方块(除非使用特定工具),无法放置方块冒险地图,剧情服务器,主题体验
3旁观模式穿墙飞行,无法与世界交互,可观察其他玩家服务器监控,地图预览, spectator赛事解说

最佳实践

  1. 根据服务器主题选择模式

    • 对于冒险地图服务器,推荐设置 forced-mode: 2 (冒险模式)
    • 对于创造建筑服务器,推荐设置 forced-mode: 1 (创造模式)
    • 对于标准生存服务器,可以设置 enabled: false 禁用强制功能
  2. 权限管理

    • 谨慎分配 esbpm.gamemode.bypass 权限,建议仅授予信任的管理员
    • 可以使用权限插件为不同等级的管理员配置不同的游戏模式权限
  3. 玩家体验

    • 在启用强制游戏模式前,建议提前通知玩家
    • 可以在服务器公告或欢迎信息中说明游戏模式限制

常见问题

Q: 如何允许特定玩家更改游戏模式? A: 可以通过授予该玩家 esbpm.gamemode.bypass 权限来允许其更改游戏模式。

Q: 为什么玩家无法破坏或放置方块? A: 如果配置了 forced-mode: 2 (冒险模式),玩家默认无法破坏或放置方块,除非使用特定工具。

Q: 如何临时禁用强制游戏模式功能? A: 可以将配置文件中的 gamemode.enabled 设置为 false 并重启服务器或重载插件。