ZthLobby 是一个轻量级 Paper 大厅插件,用来替代当前大厅实际用到的少量 DeluxeHub 功能。
插件只保留必要能力:
- 二段跳
- 基础世界保护
- 玩家加入时灭火
- 玩家重生后恢复飞行权限
- 新玩家首次加入时传送到指定 HuskHomes warp
- Paper API
26.1.2 - Java
25或更高版本 - Maven,用于从源码构建
- HuskHomes,可选依赖;用于新玩家出生点传送
ZthLobby 监听 PlayerToggleFlightEvent,把生存/冒险模式玩家的飞行尝试转换成一次弹射。
行为细节:
- 只处理
event.isFlying() == true的事件 - 不处理创造模式和旁观模式玩家
- 不处理
disabled-worlds中列出的世界 - 不处理拥有
zthlobby.bypass.doublejump权限的玩家 - 要求玩家脚下 2 格范围内存在固体方块或水,避免高空连续触发
- 支持按秒配置冷却时间
- 水平弹射力度和垂直弹射力度都可配置
- 弹射后不会调用
setAllowFlight(false) - 玩家加入、靠近地面移动、重生后会恢复
allowFlight
最后一点是关键差异:DeluxeHub 3.7.5 在二段跳后禁用了飞行权限,导致玩家落地后可能无法继续正常触发二段跳。ZthLobby 避免这个行为,让玩家落地后可以再次触发。
世界保护只在不属于 disabled-worlds 的世界生效,并且会跳过拥有 zthlobby.bypass.worldsettings 权限的玩家。
当前支持的保护:
- 取消摔落伤害
- 取消火焰、燃烧和岩浆伤害
- 取消溺水伤害
- 取消虚空伤害,并把玩家传送到当前世界出生点
- 取消饥饿值消耗,并保持玩家满饥饿值
- 隐藏玩家死亡消息
开启后,玩家加入服务器时会执行 player.setFireTicks(0),清除身上的燃烧状态。
玩家重生后,插件会在下一个服务器 tick 恢复 allowFlight。这个功能合并了原先独立的 ZthLobbyFix 插件行为。
开启后,插件会在玩家首次加入服务器时延迟执行一次传送。
行为细节:
- 只处理
!player.hasPlayedBefore()的玩家 - 默认延迟
20tick,也就是约 1 秒 - 优先通过 HuskHomes API 传送到配置的 warp
- 如果 HuskHomes 未安装、未启用或指定 warp 不存在,则回退传送到当前世界出生点
plugin.yml中声明了softdepend: [HuskHomes],HuskHomes 存在时会先于 ZthLobby 加载
| 权限 | 说明 | 默认值 |
|---|---|---|
zthlobby.bypass.doublejump |
跳过该玩家的二段跳处理 | false |
zthlobby.bypass.worldsettings |
跳过该玩家的世界保护处理 | false |
默认 config.yml:
disabled-worlds:
- world_nether
double_jump:
enabled: true
launch_power: 2.0
launch_power_y: 1.3
cooldown: 0
world_settings:
disable_hunger_loss: true
disable_fall_damage: true
disable_void_death: true
disable_fire_damage: true
disable_drowning: true
disable_death_message: true
join_settings:
extinguish: true
new_player_spawn:
warp_name: lobby-new-player不启用 ZthLobby 功能的世界名称列表。
示例:
disabled-worlds:
- world_nether
- world_the_end| 配置项 | 说明 |
|---|---|
enabled |
是否全局启用二段跳 |
launch_power |
水平弹射力度 |
launch_power_y |
垂直弹射力度 |
cooldown |
冷却时间,单位秒;0 表示无冷却 |
| 配置项 | 说明 |
|---|---|
disable_hunger_loss |
取消饥饿值变化,并保持玩家满饥饿值 |
disable_fall_damage |
取消摔落伤害 |
disable_void_death |
取消虚空伤害,并传送到世界出生点 |
disable_fire_damage |
取消火焰、燃烧和岩浆伤害 |
disable_drowning |
取消溺水伤害 |
disable_death_message |
隐藏玩家死亡消息 |
| 配置项 | 说明 |
|---|---|
extinguish |
玩家加入时清除燃烧状态 |
| 配置项 | 说明 |
|---|---|
warp_name |
HuskHomes warp 名称 |
新玩家相关处理遵循以下逻辑:
- 以
zth.rules.agreed权限作为是否接管的判断 - 接管
PlayerJoinEvent、PlayerRespawnEvent和/spawn、/cmi spawn - 通过 HuskHomes 将玩家传送到配置的 warp
- 如果 HuskHomes 不可用或 warp 不存在,则跳过传送
mvn clean package构建完成后,插件 JAR 位于:
target/ZthLobby-1.1.0.jar
- 执行
mvn clean package构建插件。 - 将
target/ZthLobby-1.1.0.jar复制到服务器的plugins/目录。 - 从
plugins/目录移除旧的 DeluxeHub JAR。 - 如果不再需要旧配置,移除 DeluxeHub 的配置目录。
- 移除旧的
ZthLobbyFixJAR,因为重生恢复飞行功能已经合并进 ZthLobby。 - 如果需要新玩家 warp 传送,确认服务器已安装 HuskHomes,并存在配置中的 warp。
- ZthPatches 中的
lobbyNewPlayerSpawnWarpName功能已合并到本插件,可按需移除或更新 ZthPatches 中对应逻辑。 - 重启服务器。
- 按需编辑
plugins/ZthLobby/config.yml。 - 修改配置后建议再次重启服务器;谨慎使用 reload。
ZthLobby/
├── pom.xml
├── src/main/java/ink/magma/zthlobby/
│ ├── ZthLobby.java
│ ├── DoubleJumpListener.java
│ ├── WorldProtectionListener.java
│ ├── PlayerListener.java
│ └── NewPlayerSpawnListener.java
└── src/main/resources/
├── plugin.yml
└── config.yml
- 本插件不是 DeluxeHub 的完整复刻。
- 本插件只实现当前大厅实际需要的功能。
- 本插件没有命令。
- 配置通过 Bukkit 默认插件配置机制加载。