Files
EssentialsC/README.md
T
2026-08-05 23:20:18 +08:00

221 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 与 LittleSkinProvider 的 `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-<version>.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: <https://github.com/Coldsmiles/EssentialsC>
- Gitea: <https://git.infstar.cn/InfStarMC/EssentialsC>