喵托邦 Meowopia

OOCore

喵托邦 Meowopia · OOCore 平台核心品牌横幅

喵托邦 / Meowopia OO 系列的平台前置,归入基础(Core)。 OOCore 统一管理模块身份、运行能力、生命周期与服务端适配,让各个 OO 插件保持独立功能,同时能够安全组合。

它不是玩法插件,也不提供独立的网页后台、窗口编辑器或客户端画面。只安装 OOCore 不会自动获得聊天、音乐、菜单或游戏内容;需要另外安装对应产品。

它解决什么问题

OOCore 为已接入的 OO 插件提供统一的平台能力,让模块在运行前确认所需依赖,并在停止时释放自己的任务、服务和访问权限。业务玩法与可视化管理仍由对应产品负责。

已实现功能 / Implemented

以下能力已随 OOCore 1.7.3 正式版交付。部署验证基线为 Paper 26.2-92 与 Java 25;这不表示所有服务端、业务插件组合或真实玩家负载都已验收。需要其他插件调用的能力,只有该插件完成正式接入后才会发挥作用。

已发布能力 用户实际可以做什么 必要条件 / 边界
模块依赖与能力检查 启动时发现缺失的必要依赖或平台能力,避免不兼容模块盲目运行 业务插件按正式接口声明要求;不是按插件版本号完全相等来判断
/oo 统一入口与 Core 诊断 使用已注册的插件命令;管理员查看 Core 版本、健康状态、适配器和模块信息 Core 详情需要查看或管理权限;业务命令遵守各插件自身规则
模块所属的任务与服务 已结束的一次性任务及时释放登记;模块停止时撤销相应任务和服务访问 对已接入 Core 生命周期的资源有效,不能代替第三方插件清理所有资源
托管文件存储与服务器 UID 保存模块数据与持久服务器标识;限制超大读取并保持旧数据格式 通过认证模块会话访问;写入仍同步,托管文件不要手改
平台基础接口 接入插件可使用文本、标识、实体/物品和基础物品数据;消息通道仅提供能力元数据 以当前适配器实际提供的能力为准;不等于任意底层封包支持
安全默认配置 默认关闭旧的全局存储入口,限制普通玩家读取 Core 详情 legacy-storage.enabled 保持 false;需要兼容旧插件时先阅读风险说明

未实现功能 / Not implemented

Core 的独立网页后台、窗口编辑器和业务玩法不是待补的 Core 功能;它们由对应产品负责。对外变量/占位符的当前状态见变量与占位符。

未来计划 / Roadmap

下一目标为 1.8.0,尚未发布;当前正式版仍为 1.7.3。目标包括已批准的任务、内存与存储优化、异步存储与背压、由 Core 统一承担的 Java 21 / 旧 Paper 兼容、只读属性与原有连接通信,以及实际业务联动验证。隔离环境的兼容试验不是正式 Java 21 安装包,也不代表其他平台组合已获支持;当前部署基线保持 Paper 26.2-92 / Java 25。

以上是已有规划,不是已交付功能,也没有确定发布日期或新版本承诺。现有插件仍按接口契约、握手与必需能力协商兼容性,不因计划变化要求服主立即升级环境。

版本策略

当前正式稳定版为 1.7.3,更新内容见 GitHub Release。仓库与二进制采用受控分发,未获访问权限时请通过下方支持渠道联系作者。

OOCore 是 OO 服务端插件的运行时硬依赖。业务插件通过接口契约版本(ABI)、启动握手和所需能力判断兼容性,而不是要求“版本号必须等于 1.7.3”。“最低已验证基线”表示开发者实际验证过的组合;“运行要求”表示启动必须满足的能力。未来兼容版本不应仅因版本号不同而被拒绝,安装时仍应核对对应插件的发布说明。

安装

  1. 准备符合上方部署基线的 Paper 服务端与 Java 25;普通 Bukkit/Spigot 不属于本页的已验证部署范围。
  2. 停止服务器,并备份完整的 plugins/OOCore/ 目录(已有安装时)。
  3. 将正式的 OOCore-1.7.3.jar 放入服务器的 plugins/ 目录;移走旧版 Core JAR,不能同时保留两份。
  4. 按需安装其他 OO 插件。OOCore 自身不需要 OOEngine 或 OOConsole 才能启动。
  5. 启动服务器,让插件生成配置和托管状态;使用管理员账号执行 /oo core 检查启动结果。

需要窗口或可视化管理时,请分别查看 OOEngine 与 OOConsole 的安装要求。不要把 SDK、测试工具或源码包放入服务器插件目录。

配置 / Configuration

1.7.3 已提供用户配置文件 plugins/OOCore/config.yml。 首次启动自动生成,包含中英注释。目前唯一用户设置为旧存储兼容开关;没有额外玩法配置或 Core 网页设置界面。

# 修改后完整重启服务器;不支持热重载。
# Restart the server after editing; hot reload is not supported.
legacy-storage:
  # 布尔值,默认 false;建议保持关闭。
  # Boolean, default false; keep disabled unless temporarily required.
  enabled: false
设置 类型 / 默认值 作用与注意事项
legacy-storage.enabled 布尔值 / false 控制已废弃的旧存储兼容入口。设为 true 会允许所有 API 消费者通过该旧入口进行跨模块访问;不是模块白名单。仅在完全信任旧插件且暂时无法迁移时短期启用。

填写不带引号的 true 或 false,不要写成字符串 "true",错误类型会导致启动失败。新插件应使用绑定模块会话的存储入口,不需要打开此开关。关闭开关不会删除旧文件,也不改变新式模块存储的数据格式。

plugins/OOCore/storage/、plugins/OOCore/scoped-storage/ 和 plugins/OOCore/server.uid 是程序管理的状态,不是配置示例;不要手改或为排错随意删除。备份时保留整个目录。安装包中的构建属性不是服务器运行配置。

联系 / Contact

报告问题时提供 OOCore 与业务插件版本、服务端发行版、复现步骤及相关错误片段。发送日志前移除令牌、密码、玩家隐私和服务器标识;不要公开整份数据目录。

Platform Capability

Capability 表示平台实际提供的能力,例如调度、文本与物品。1.7.3 的 OOPlatform.channels() 仅提供通道能力元数据,不代表已具备通道注册或消息收发接口。业务插件应只要求自己真正使用的能力;缺少必需能力时应拒绝启动相应功能,而不是盲目继续运行。

Core 的低层 raw packet 能力仍不可用,也不能把消息通道的能力描述当作可用的收发功能。缺少可选功能时,先检查对应业务插件的要求,不要尝试通过配置伪造能力。

生命周期与泄漏防护

任务、服务与存储访问应归属于发起它们的模块。已接入这些接口的模块停止后,其登记和访问被撤销;1.7.3 会及时回收已结束的一次性任务登记,而不是等到停服才释放。

这不意味着 OOCore 能替任意第三方插件清理资源,也不构成对恶意同进程 Java 插件的沙箱。只安装可信来源的插件;业务插件仍需遵守自己的线程、资源与权限约束。

命令

以下为正式版 1.7.3 的 Core 命令。玩家在聊天栏输入带 / 的写法;服务器控制台输入时省略开头的 /。Core 不把这些诊断命令限制为仅玩家或仅控制台,但仍检查下列权限。

完整语法 参数与默认值 用途 精确权限要求 玩家 / 控制台 最小示例
/oo 无参数;不会自动打开 Core 详情 显示版本与命令用法 无 Core 权限检查 均可 玩家:/oo;控制台:oo
/oo core 不带子命令时默认显示诊断 显示健康状态、适配器、调度类型、服务器标识、模块、服务和能力 oocore.core.view 或 oocore.admin 均可,需相应权限 /oo core
/oo core admin 无额外参数 显示同一份诊断;不执行修改、重载或清理 oocore.admin 均可,需相应权限 oo core admin
/oo core about 无额外参数 显示诊断,并附作者和联系方式 oocore.core.view 或 oocore.admin 均可,需相应权限 /oo core about
/oo core info 无额外参数;用途与 about 相同 显示诊断,并附作者和联系方式 oocore.core.view 或 oocore.admin 均可,需相应权限 oo core info

/oo <节点> [参数…] 是已安装插件的路由语法,不是 Core 自带的业务命令。<节点> 必须由相应插件实际注册;省略 [参数…] 时向它传递空参数,其默认行为、权限和玩家/控制台限制由该插件决定。具体可运行示例请查对应产品页,Core 不代为承诺其命令已可用。

没有单字母 Core 缩写,也没有 Core 自带的 reload、清库或一键优化操作。注意:当前解析器对未知 Core 子命令或多余参数会退回显示诊断或忽略多余参数,出现输出不代表执行了该操作。例如输入 /oo core reload 不会重载配置;修改配置必须完整重启服务器。

权限

精确权限节点 对应功能 默认 OP 默认普通玩家 实际继承 / 授权关系
oocore.core.view 查看 Core 详情及 about / info 输出;允许在未知模块提示中查看已加载模块清单 有 无 没有声明子权限;单独授予不会获得 admin 权限
oocore.admin 使用 core admin;也可查看其他 Core 详情 有 无 代码将其作为 Core 查看权限的替代授权;不是通过 descriptor 的 children 继承
oocore.command 保留的 descriptor 权限声明;1.7.3 的根命令和 Core dispatcher 没有使用它作为访问门禁 有 有 无继承;拒绝该节点并不能阻止 /oo,授予它也不能解锁 Core 详情

这些是插件声明的默认值,服务器权限系统可以显式授予或拒绝相应节点。控制台没有额外的 Core 专用限制,详情调用同样通过发送者权限检查。仅授予 oocore.core.view 时,/oo core admin 仍会拒绝。

OOCore 未声明 oocore.* 通配权限,也未声明父子权限树;不要把权限管理插件自己的通配行为写成 OOCore 的内置功能。业务插件的权限独立管理,不要为了开放聊天等业务命令而向所有玩家授予 Core 管理权限。

变量与占位符

当前版本暂无对外变量/占位符。 以下类别均没有由 OOCore 1.7.3 提供的服主可用变量,不能把诊断字段当作替换语法。

类别 可用精确写法 含义 / 返回或显示示例 作用域 / 可用位置 必要前置与当前状态
PlaceholderAPI(PAPI) 无 不适用;Core 不提供 PAPI 变量值 没有 OOCore 自带的 PAPI expansion 不需要安装 PAPI 来运行 Core;仅安装 PAPI 也不会新增 Core 占位符
消息模板变量 无 Core 命令输出为程序生成,不提供服主模板替换值 没有 Core 消息模板配置文件 当前未提供
UI 绑定变量 无 没有可直接填入 UI 的 Core 变量表达式 Core 不提供窗口或 UI 绑定解析器 其他插件的 UI 变量以其正式文档为准
配置替换变量 无 legacy-storage.enabled 是布尔配置项,不是占位符 config.yml 读取实际布尔值,不作变量替换 使用 true / false,不要填写变量表达式

诊断里的 server=、modules=、services= 是输出标签,不是 PAPI、消息或 UI 占位符。只读 API 数据也不自动构成可供服主填写的变量。

插件接入

服主只需安装正式服务端 JAR,无需编译 API 或修改开发工程。插件开发者通过稳定接口声明所需能力,并让任务、服务和存储遵守模块生命周期。

Command V2 的权限查询只对应贡献预先声明的单个非空权限节点;空声明不能再查询其他权限,也没有前缀、子节点或通配授权。这不是通用权限查询接口,具体业务权限应按该插件的正式接入方案处理。

构建与发布

OOCore 为专有软件,源码和内部开发工具不公开分发。服主使用作者正式提供的服务端 JAR;GitHub Release 中的更新日志说明本版变化,开发快照不等同正式版本。

升级时停服备份整个 plugins/OOCore/,再替换 JAR。1.7.3 默认禁用旧存储入口是安全行为变化:依赖旧入口的插件需要迁移;临时兼容开关只用于明确接受风险的过渡。不要热重载内核。

本次更新不迁移托管数据格式。如确需回滚,停服后恢复上一正式 1.7.2 JAR并保留相同托管数据;只有数据本身需要恢复时才使用备份。回滚旧版同时意味着放弃本版安全默认值与修复,应仅用于短期恢复;禁止回滚到已撤回的 1.7.0。

验收重点

安装后请确认:

已知问题: 同步写入预算、未归因长 tick 和兼容验证缺口见未实现功能。请按已验证部署范围安装,不把未来计划当作当前能力。

OOConsole 集成

OOCore 已提供只读健康与平台诊断能力,但不会自行启动 HTTP 服务、开放网页端口或提供编辑器。安装 Core 不会自动出现控制台页面。

可视化入口由独立的 OOConsole 提供,实际可用功能和安装要求以其当前正式版本文档为准。Core 的接口可用,不等于所有业务插件的可视化页面都已交付。