7.8 KiB
EssentialsC
轻量、现代、面向 Paper 服务端的基础功能插件,灵感来自 CMI,但更聚焦于常用能力与模块化构建。
项目定位
- 最低支持版本为
Paper 1.21.11 - 已适配
Paper 26.2 - 插件统一使用 Paper 公共 API 和 Java 21 字节码,无需按服务端版本拆分构建
- 配置按职责拆分:主行为与 SkinBridge、模块开关、菜单布局、维护模式和语言文本分别管理
- 支持运行期模块开关,避免为不同功能组合构建多个插件版本
主要功能
便捷方块
/workbench(/wb)/anvil/cartographytable(/ct, /cartography)/grindstone(/gs)/loom/smithingtable(/st, /smithing)/stonecutter(/sc)/enderchest(/ec)/essc blocks打开便捷菜单
玩家功能
/fly/nightvision(/nv)/glow/heal/feed/repair(/rep)/hat/suicide(/die)/vanish(/v)/seen(/info)/tpsbar/essc admin管理模式切换/maintenance(/maint)维护模式管理
控制台命令
/essc help、/essc version、/essc reload/maintenance [on|off|status|reload|add|remove|list],也可通过/essc maintenance ...执行/seen [玩家]、/heal [玩家]、/feed [玩家]、/tpsbar [玩家]/essc skin [status|refresh] [玩家]
依赖发送者位置、背包或玩家交互状态的命令仅允许在游戏内执行。控制台执行玩家状态命令时必须明确提供目标玩家。
其它功能
- Shift + 右键快捷打开潜影盒
- 潜影盒交互保护,尽量避免刷物品、吞物品和嵌套放入问题
- 管理模式独立背包、装备栏与状态切换
- 维护模式:替换 MOTD、登录拦截、白名单放行和管理员拦截通知
- Enderman 掉落方块控制
模块配置
项目默认构建一个完整插件。玩家常用命令、Vanish 与 TPA 属于核心功能,始终加载并通过权限控制;其他可选功能由 plugins/EssentialsC/modules.yml 控制。
| 模块 | 默认状态 | 说明 |
|---|---|---|
blocks |
开启 | 便捷方块命令、/essc blocks 菜单、潜影盒快捷打开 |
admin-mode |
开启 | /essc admin 管理模式与独立状态保存 |
tpsbar |
开启 | 插件版 TPSBar,检测到服务端原生命令时自动避免冲突 |
mob-drops |
关闭 | 末影人掉落控制,默认关闭以保留过去标准版行为 |
maintenance |
开启 | 维护模式命令、MOTD 替换、登录拦截、白名单和拦截通知 |
skin-bridge |
关闭 | 查询外置 Yggdrasil profile,并通过 MineSkin 与 Paper Profile API 同步皮肤 |
修改模块开关后使用 /essc reload 即可刷新运行期服务、监听器和命令门禁。可选模块命令始终注册,模块关闭时会返回统一的停用提示,因此无需为了启用命令重启服务器。
安装说明
- 从 Releases 下载所需版本。
- 将插件放入服务端的
plugins/目录。 - 建议安装 LuckPerms;维护模式会优先通过其缓存异步检查登录权限,未安装时会在玩家加入后立即复核。
- 启动一次服务端以生成配置文件。
- 按需修改
plugins/EssentialsC/下的配置文件与lang/语言文件。 - 使用权限插件为玩家分配所需权限。
配置说明
当前配置按功能职责拆分,避免所有设置堆积在一个文件中:
SkinBridge 默认关闭。使用前需启用 modules.yml 中的 modules.skin-bridge.enabled,填写 config.yml 中的 skin-bridge.mineskin.api-key,并至少启用一个 Provider。真实密钥只应填写在服务器运行目录的 config.yml 中,不要写入源码或提交到公开仓库。该模块不要求安装 SkinsRestorer。默认支持 InfstarMC 与 LittleSkin;Provider 的 name 可自由修改,并会显示在日志和 /essc skin status <玩家> 中。生成后的 MineSkin 纹理会按皮肤 URL 缓存到 skin-cache.yml,并遵守配置的 TTL。
config.yml- 语言选择
- 管理模式行为
- 掉落控制
- TPSBar 模式
- TPA 请求、预热、冷却和音效
- SkinBridge、MineSkin、Provider 与排除名单
modules.yml- 功能模块开关
blocks-menu.yml- 便捷菜单分区、槽位、材质和权限
maintenance.yml- 维护模式状态
- 维护 MOTD
- 维护踢出提示
- 维护 BossBar
- 绕过权限
- 维护白名单
- 拦截通知权限
lang/zh_CN.yml、lang/en_US.yml- 命令反馈
- 帮助信息
- 菜单文本
- 管理模式文本
- TPSBar 文本
主配置当前使用 config-version: 2。SkinBridge 直接配置在 config.yml 中,便捷菜单配置仍保存在独立文件中。
版本变化与升级说明见 CHANGELOG.md。
权限示例
常用权限节点:
essentialsc.command.blocks
essentialsc.command.workbench
essentialsc.command.enderchest
essentialsc.command.fly
essentialsc.command.nightvision
essentialsc.command.glow
essentialsc.command.heal
essentialsc.command.feed
essentialsc.command.repair
essentialsc.command.vanish
essentialsc.vanish.see
essentialsc.command.seen
essentialsc.command.tpa
essentialsc.command.tpahere
essentialsc.command.tpaall
essentialsc.command.tpaccept
essentialsc.command.tpdeny
essentialsc.command.tpignore
essentialsc.tpa.bypass-warmup
essentialsc.tpa.bypass-cooldown
# 使用数字覆盖玩家预热时间,例如 3 秒
essentialsc.tpa.warmup.3
essentialsc.command.admin
essentialsc.command.tpsbar
essentialsc.command.maintenance
essentialsc.command.skin
essentialsc.command.skin.status
essentialsc.command.skin.refresh
essentialsc.command.skin.others
essentialsc.maintenance.bypass
essentialsc.maintenance.notify
essentialsc.shulkerbox.open
essentialsc.mobdrops.enderman
essentialsc.*
具体默认值与完整节点以 paper-plugin.yml 为准。
从源码构建
git clone https://github.com/Coldsmiles/EssentialsC.git
cd EssentialsC
./gradlew build
Windows 可使用:
.\gradlew.bat build
构建产物输出到 build/libs/EssentialsC-<version>.jar。
常用任务:
./gradlew shadowJar
./gradlew build
./gradlew deployToPaper12111
./gradlew deployToPaper262
./gradlew deployToLeaves262
本地测试服
项目包含三个本地测试服目录:
| 测试服 | 端口 | 部署任务 | 启动脚本 |
|---|---|---|---|
| Paper 1.21.11 | 25566 |
deployToPaper12111 |
test-server/paper-1.21.11/start.bat |
| Paper 26.2 | 25567 |
deployToPaper262 |
test-server/paper-26.2/start.bat |
| Leaves 26.2 | 25568 |
deployToLeaves262 |
test-server/leaves-26.2/start.bat |
IDEA 运行配置会先构建插件,再由启动脚本复制最新 JAR,并保留插件数据以便测试升级流程。手动执行部署任务会替换 EssentialsC*.jar 并删除 plugins/EssentialsC 数据目录,用于测试全新安装及默认配置生成。
开发说明
- 使用
paperweight-userdev进行 Paper 开发 - 使用 Paper Lifecycle Command API 注册命令,避免直接反射 Bukkit CommandMap
- 运行时通过
modules.yml控制模块加载,命令始终注册并按模块状态执行门禁 - 普通 push/PR 会执行构建与测试,版本标签继续生成 GitHub Release
许可证
本项目基于 MIT License 开源。