# EssentialsC 轻量、现代、面向 Paper 服务端的基础功能插件,灵感来自 CMI,但更聚焦于常用能力与模块化构建。 [![Version](https://img.shields.io/github/v/release/Coldsmiles/EssentialsC?style=flat-square)](https://github.com/Coldsmiles/EssentialsC/releases) [![License](https://img.shields.io/github/license/Coldsmiles/EssentialsC?style=flat-square)](LICENSE) [![Paper](https://img.shields.io/badge/Paper-1.21.11%2B-blue?style=flat-square)](https://papermc.io/) [![Java](https://img.shields.io/badge/Java-21-orange?style=flat-square)](https://adoptium.net/) ## 项目定位 - 最低支持版本为 `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` 即可刷新运行期服务、监听器和命令门禁。可选模块命令始终注册,模块关闭时会返回统一的停用提示,因此无需为了启用命令重启服务器。 ## 安装说明 1. 从 [Releases](https://github.com/Coldsmiles/EssentialsC/releases) 下载所需版本。 2. 将插件放入服务端的 `plugins/` 目录。 3. 建议安装 LuckPerms;维护模式会优先通过其缓存异步检查登录权限,未安装时会在玩家加入后立即复核。 4. 启动一次服务端以生成配置文件。 5. 按需修改 `plugins/EssentialsC/` 下的配置文件与 `lang/` 语言文件。 6. 使用权限插件为玩家分配所需权限。 ## 配置说明 当前配置按功能职责拆分,避免所有设置堆积在一个文件中: 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](CHANGELOG.md)。 ## 权限示例 常用权限节点: ```text 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` 为准。 ## 从源码构建 ```bash git clone https://github.com/Coldsmiles/EssentialsC.git cd EssentialsC ./gradlew build ``` Windows 可使用: ```powershell .\gradlew.bat build ``` 构建产物输出到 `build/libs/EssentialsC-.jar`。 常用任务: ```bash ./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](LICENSE) 开源。 ## 仓库 - GitHub: - Gitea: