Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZthLobby

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() 的玩家
  • 默认延迟 20 tick,也就是约 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

disabled-worlds

不启用 ZthLobby 功能的世界名称列表。

示例:

disabled-worlds:
  - world_nether
  - world_the_end

double_jump

配置项 说明
enabled 是否全局启用二段跳
launch_power 水平弹射力度
launch_power_y 垂直弹射力度
cooldown 冷却时间,单位秒;0 表示无冷却

world_settings

配置项 说明
disable_hunger_loss 取消饥饿值变化,并保持玩家满饥饿值
disable_fall_damage 取消摔落伤害
disable_void_death 取消虚空伤害,并传送到世界出生点
disable_fire_damage 取消火焰、燃烧和岩浆伤害
disable_drowning 取消溺水伤害
disable_death_message 隐藏玩家死亡消息

join_settings

配置项 说明
extinguish 玩家加入时清除燃烧状态

new_player_spawn

配置项 说明
warp_name HuskHomes warp 名称

新玩家相关处理遵循以下逻辑:

  • zth.rules.agreed 权限作为是否接管的判断
  • 接管 PlayerJoinEventPlayerRespawnEvent/spawn/cmi spawn
  • 通过 HuskHomes 将玩家传送到配置的 warp
  • 如果 HuskHomes 不可用或 warp 不存在,则跳过传送

构建

mvn clean package

构建完成后,插件 JAR 位于:

target/ZthLobby-1.1.0.jar

部署

  1. 执行 mvn clean package 构建插件。
  2. target/ZthLobby-1.1.0.jar 复制到服务器的 plugins/ 目录。
  3. plugins/ 目录移除旧的 DeluxeHub JAR。
  4. 如果不再需要旧配置,移除 DeluxeHub 的配置目录。
  5. 移除旧的 ZthLobbyFix JAR,因为重生恢复飞行功能已经合并进 ZthLobby。
  6. 如果需要新玩家 warp 传送,确认服务器已安装 HuskHomes,并存在配置中的 warp。
  7. ZthPatches 中的 lobbyNewPlayerSpawnWarpName 功能已合并到本插件,可按需移除或更新 ZthPatches 中对应逻辑。
  8. 重启服务器。
  9. 按需编辑 plugins/ZthLobby/config.yml
  10. 修改配置后建议再次重启服务器;谨慎使用 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 默认插件配置机制加载。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages