Resource Pack Manager 1.7.5:
- [新增] 添加了 Nexo 兼容性以支持自动资源包检测。
- [新增] 为 BetterHUD、InfiniteVehicles、MegaBlockSurvivors、MMOInventory、Nexo 和 ValhallaMMO 添加了软依赖。
- [新增] 插件初始化现在使用 MagmaCore 的异步/同步初始化系统,以提升启动性能和进度追踪能力。
- [修复] 修复了资源包混合过程中覆盖目录被错误跳过的问题——现在覆盖目录会被正确合并。
- [修复] 修复了在关闭期间取消资源包变更监控时可能出现的空指针异常。
- [修复] 通过添加初始化状态检查,修复了在初始化期间禁用插件时可能导致的崩溃问题。
- [修复] 将第三方资源包初始化从配置字段构造函数移至主初始化流程,以便更好地控制启动顺序。
- [修复] 将 FreeMinecraftModels Metrics 依赖替换为直接的 bStats 依赖。
- [修复] 将 MagmaCore 更新至 1.28-SNAPSHOT 版本。
- [修复] 将 Lombok 更新至 1.18.42 版本,并为 maven-compiler-plugin 配置了注解处理器路径。
ResourcePackManager 2.1.0:
-
[新增] Bedrock 自定义实体桥接,带有 Geyser 桥接扩展,用于向 Bedrock 玩家提供自定义实体
-
[新增] 导入由 FreeMinecraftModels 生成的 Bedrock 实体包
-
[新增] 在游戏内的设置菜单中检查并一键下载 ResourcePackManager 更新,附带自动更新开关(默认关闭)
-
[新增] 设置菜单中的推荐插件视图(外加一个 recommendedplugins 命令),以及用于浏览 MagmaGuy 其他插件的 /nightbreak plugins 目录
-
[修复] 改进了 Bedrock 纹理拼接和资源包合并
-
[修复] 当合并后的包缺少有效的 formats 字段(MC 1.21.9+ 客户端会拒绝此类包)时,在控制台中发出警告,而不是静默分发被拒绝的包。
ResourcePackManager 2.0.1:
- [修复] MC 1.21.9+ 的 pack.mcmeta 合并现在可在混合旧/新格式资源包中保持 pack_format、min_format、max_format 和 supported_formats 有效
- [修复] 合并后的模型 JSON 现在会自动添加缺失的粒子纹理,并将无效的 UV 坐标限制在 0-16 范围内
- [修复] Bedrock 转换现在能处理未命名空间的物品模型树节点类型,例如 type: "model"
- [修复] 即使禁用了 Bedrock 转换,传统的 Geyser 资源包副本现在也会被清理
- [调整] 基于 MagmaCore 更新的 Nightbreak 引导程序、共享命令栈以及 RSPM 标准命令和资源包输出流程所使用的资源包 ZIP 工具构建
ResourcePackManager 2.0.0:
- [新增] 多模块项目布局 —
resourcepackmanager-bukkit(后端)、resourcepackmanager-bungee和resourcepackmanager-velocity(用于 BungeeCord / Waterfall 和 Velocity 的代理插件)、resourcepackmanager-bedrock(Geyser / Bedrock 转换)、resourcepackmanager-http-common(共享 HTTP + Magmaguy RSP 客户端)、resourcepackmanager-mixer(平台中立的资源包合并引擎)、resourcepackmanager-proxy-common(Geyser 会话绑定 + 网络同步)。单个后端 jar 文件仍放入plugins/;代理 jar 文件在首次启动时自动解压到代理的plugins/目录。 - [新增] 网络模式 — Velocity、BungeeCord 和 Waterfall 插件检测每个连接的后端,通过嵌入式 HTTP 服务器获取每个后端的混合 Java 和 Bedrock 资源包,按网络进行合并,将合并后的 Java 资源包推送给 Java 玩家,并将合并后的 Bedrock 资源包提供给 Geyser 会话。运行在代理背后的后端会跳过自身的
setResourcePack调用,使代理成为唯一的资源包来源。通过 Floodgate-without-Geyser、spigot.yml settings.bungeecord或paper-global.yml proxies.velocity.enabled自动检测。 - [新增] 基于 Floodgate 密钥派生的网络密钥 —
NetworkKeyResolver将plugins/floodgate/key.pem哈希为 UUID 格式的密钥,并在同一 Floodgate 网络上的所有代理和后端之间自动共享。不再需要将密钥粘贴到代理配置中;不同的 Floodgate 网络会自动获得独立的密钥。设置简化为“放入 jar 文件并重启”。 - [新增] 代理 ↔ 后端 Bedrock 资源包交付 — 后端通过嵌入式
PackHttpServer在/bedrock.zip(以及/mappings.json的映射文件)提供其每个后端的 Bedrock 资源包 zip;代理通过BackendMetadataPoller轮询每个后端(首次循环后使用廉价的 304 Not Modified),并通过GeyserBinder将 URL 发送给 Bedrock 客户端。如果 HTTP 轮询失败,插件消息传递机制将作为备用方案发送 URL。 - [新增] 三层警告系统 — 当 Bedrock 会话在资源包准备就绪前加载时,Bedrock 玩家会收到一个 Cumulus“确定 — 我将重新连接”模态框,每位在线 Java 玩家会收到一条聊天警告指明受影响的玩家,代理控制台会显示多行横幅。首次成功合并时(附带资源包大小 + sha1 前缀)会以一次性绿色复选标记作为首尾呼应。在后端侧,当玩家在混合 + 上传完成前加入时,
AutoHost.sendResourcePack会触发控制台横幅和每位玩家的聊天警告。 - [新增] 自托管备用方案 —
AutoHost现在会启动PackHttpServer,如果 magmaguy.com 上传失败,则从此主机提供 Java 资源包。新配置项:selfHostEnabled(默认 true)、selfHostPort(-1 = 自动推导 MC 端口 +networkHttpOffset-v2)、selfHostExternalHost(通过 ipify / checkip →Bukkit.getIp→getLocalHost自动检测)、selfHostForce(完全绕过远程)、preferSelfHost(优先尝试自托管,若可达性/HEAD 探测失败则回退到远程 — 默认 true)。 - [新增]
/rspm status命令 — 单次操作员转储,包含版本、部署模式(独立 vs 网络后端)、解析后的网络密钥(掩码最后 4 位)、Java 资源包路径/大小/sha1、Bedrock 资源包 + Geyser 映射状态、活跃托管 URL、所有相关配置标志,以及 Floodgate / Geyser 集成健全性检查。通过ProxyStatusRenderer镜像到 Velocity 和 Bungee 代理,使链路两端共享输出布局。 - [新增] 为
BetterStructures、CannonRTP、EternalTD、MegaBlockSurvivors和ResurrectionChest提供兼容插件预设。 - [新增] 通过
BedrockShortName进行 Bedrock 标识符哈希 — Bedrock 资源包文件路径和 Geyser 映射 ID 折叠为 8 字符 SHA-256 十六进制前缀,消除 Bedrock"80+ 字符路径”警告泛滥,并使标识符对资源包检查不透明。 - [新增] BungeeCord 资源包推送通过反射使用原生 Bungee 协议 API — 不再需要 Protocolize(此前是
PostLoginEvent注入的硬性软依赖)。支持 1.21.4+ 数据包 ID,并为每个协议范围起始点发出一个ProtocolMapping。 - [修复]
BackendMetadataPoller按host:port去重后端,NetworkSync按后端 UUID 去重 — 多主机设置不再重复轮询或重复合并同一后端。 - [修复] AutoHost 玩家资源包广播包裹在同步调度器中 — 当上传在 HTTP I/O 线程完成时,不再违反主线程规则。
- [修复]
PackHttpServer在关闭时关闭其执行器 — 修复了每次/rspm reload累积一个执行器的线程泄漏问题。 - [修复]
MagmaguyRspClient(从AutoHost提取)接受注入的Logger,使日志行保留插件前缀,并暴露 SHA1 不匹配的会话错误而非吞没它们。 - [修复]
GeyserBinder构造现在受 Geyser 存在性保护 — 代理插件可在尚未安装 Geyser 的网络上干净启动。 - [修复] 混合器碰撞日志条目在
MixEngine/MergeOperations重构期间不再丢失;碰撞日志通过引擎包装器路由;保留过时暂存清理;保留集群排序。 - [修复] 后端启动速度:初始资源包可用性轮询从 5 秒降至 2 秒,轮询间隔从 30 秒降至 5 秒,
STABLE_CYCLES_REQUIRED从 2 降至 1(BedrockZip 通过临时文件 + 原子重命名写入,因此不会发生撕裂读取)。当后端已启动时,冷启动到首个可用合并资源包的时间从约 65 秒降至约 7 秒。稳态轮询成本通过If-Modified-Since实现每周期约 0 字节。 - [修复] Maven
copy-proxy-jars绑定到prepare-package,因此mvn compile不再因查找代理构件而失败。 - [修复] 代理构建重定位
gson以避免与 Velocity / Bungee 捆绑副本的类路径冲突。 - [调整] 当安装 Geyser 时,Bedrock 转换控制台输出噪音大幅减少 — 引入
BedrockLog.debug(...),由新配置标志bedrockConverterDebug(默认false)控制。高容量信息站点现为仅调试模式:每项“无 Geyser 等效项”通知、每根骨骼不支持属性警告、每次重载周期的“在…检测到 Geyser"/ "Geyser 映射已部署到…"状态行、“写入合并 Geyser 映射:N 条目”、每纹理“未找到纹理”、重复映射跳过通知、非 90 倍数面旋转、装备纹理未找到,以及整个ItemModelTreeWalker每节点噪音树(约 13 处)。真实错误(I/O 失败、图集超出最大值、AssetResolver 循环/深度违规、每模型转换步骤失败)和每周期"Bedrock 转换完成:N 映射”摘要保持在 INFO / WARN 级别。 - [调整] 所有模块和包从简写
rpm-*重命名为全称resourcepackmanager-*,以与插件名称保持一致。 - [调整] 模块重命名:
rpm-mixer改为resourcepackmanager-mixer;纯合并操作从 Bukkit 模块移至平台中立的 mixer 模块,以便代理可在类路径无 Bukkit 的情况下进行混合。Mix.java现在是MixEngine的薄 Bukkit 包装器。添加了MergeOperationsTest单元测试。 - [调整]
networkHttpOffset-v2键默认值为1(原为networkHttpOffset默认值100)。默认+100在共享/托管 hosting(Pterodactyl 租户、alienhost.me 等)上超出了每容器端口范围;+1甚至适用于最窄的分配。旧 v1 键故意不被读取 — 升级的操作员将在下次启动时写入 v2 默认值。 - [调整]
network-key不再是配置选项 — 由每个组件从 Floodgate 的key.pem派生,因此旧的“将此密钥粘贴到代理配置”误配置向量已消失。作为 Floodgate 尚未安装时首次启动的备用方案,在代理侧持久化。 - [调整] 插件消息缓存替换为后端 HTTP 元数据端点 — 代理不再在重连 across 中持有过时的每玩家状态。
- [调整] 网络模式文档折叠为“放入 jar 文件并重启”的 walkthroughs(服务器端 API 契约单独记录供集成 RSPM 的插件开发者使用)。
- [调整] 各种 MagmaCore 库改进(Lua 脚本引擎 + 区域移至 MagmaCore,吸收 EasyMinecraftGoals,支持 NMS v26 / Paper 26.1,基于类型的
EntityDimensions反射带缓存查找,WorldFolderResolver和 Paper 迁移碎片隔离,TemporaryBlockManager,SetupMenuBuilder+InfoButtonFactory+NightbreakSetupIcons共享 UI,ContainerAllowlist/WorldProtectionRules实例保护,MagmaCore.exportSharedAssets/enableWorldProtections/isShutdownRequested,AdvancedCommand可选参数支持,带 WorldGuard + GriefPrevention 提供者的LocationAPI,Nightbreak 令牌变更订阅者,在 1.21.2+ 采用ClientboundEntityPositionSyncPacket并跳过 BedrockClientboundBundlePacket,ArmorStand HeadPose 每 tick 强制发送以用于 Bedrock 可附着重绑定,DAMAGE_INDICATOR出站粒子数量钳制,PacketInteractionListener中每插件 Netty 处理程序名称,惰性 Lua 字段支持,ZipFileSTORED-with-EXT-descriptor 修复,去重/速率限制的 Nightbreak 认证失败日志,三层 BedrockChecker 检测 — 名称模式^\..*\d{4}$+ UUID-MSB == 0 + 不区分大小写的插件查找 — 因此即使 Floodgate 尚未注册 Bedrock 查看者也能被检测到)。
ResourcePackManager 1.8.0:
[新增] Java→Bedrock 转换现在适用于任何插件的资源包,而不仅仅是 FreeMinecraftModels——Bedrock 玩家(通过 Geyser)将自动看到来自任何发布 1.21.4+ 物品定义包的插件的 3D 物品模型、自定义盔甲和建模装备 [新增] 纯 Java 3D 物品图标渲染器——自定义物品在 Bedrock 库存中能正确渲染,无论模型旋转如何(此前非轴对齐的模型会显示为扁平的 UV 图集乱码) [新增] 通过 Geyser API 实现按 Bedrock 会话提供资源包——对现有自定义物品的纹理和模型调整现在会在下一位加入的 Bedrock 玩家身上生效,无需重启服务器(此前由于 Geyser 仅在启动时扫描一次 packs/ 文件夹,任何更改都需要重启) [新增] bedrock_display_offsets.yml——提供十二个用户可调节的参数,用于微调当模型在 Bedrock 手中位置不佳时的第一/第三人称显示偏移量 [新增] 自定义盔甲纹理现在可在 Bedrock 玩家身上渲染(使用原版盔甲几何体搭配 Java 纹理层) [修复] 第三人称手部显示现在尊重此前被丢弃的 Java X 轴旋转——修复了枪械、弓和倾斜工具在 Bedrock 上以错误俯仰角渲染的问题 [修复] 原版物品模型(如 shield.json、crossbow.json 等)不再跨资源包递归合并——修复了盾牌偏移漂移以及弩渲染为缺失纹理的问题 [修复] 物品定义合并(assets/<命名空间>/items/*.json,1.21.4+)现已具备格式感知能力——修复了损坏的变换数组、色调 RGB 三元组以及复合模型渲染顺序的问题 [修复] 覆盖图集文件(例如 ItemsAdder 的 overlay_modern/legacy_atlas)现在能正确从基础图集继承源,而不是在覆盖激活时丢失它们 [修复] pack.mcmeta 中的 supported_formats / min_format / max_format 现在已在所有格式(int、2-int 数组和对象形式)中正确扩展 [修复] 资源包混合管道现在会在插件关闭时快速退出,而不是在 onDisable 之后继续拖拽异步任务 [修复] AutoHost 进行中的上传现在会在插件禁用时被强制关闭 [修复] 多项 Bedrock 转换修复:每个(模型 × 骨骼)的图集路径、翻书动画纹理图标(此前向 Bedrock 传递的是 64×768 的条带)、可附加几何体格式从 1.16.0 提升至 1.21.0、确定性的资源包清单 UUID(Bedrock 缓存现在能正确失效)、bedrockConversionEnabled 默认值设为 true [调整] MagmaCore 依赖提升至 2.2.0-SNAPSHOT,以支持 shutdownRequested 以及新的位置/保护 API
Resource Pack Manager 1.7.6:
- [修复] 修复了在资源包合并过程中,pack.mcmeta 中非标准的顶层键(例如 Sodium 的 ignored_shaders)被静默丢弃的问题。
- [修复] 修复了覆盖条目缺少 min_format/max_format 字段导致 1.21.9+ 客户端出现“资源重载失败”的问题 — RSPM 现在会规范化来自尚未更新为新格式的第三方包的覆盖条目。
- [修复] 通过创建父目录,修复了资源包混合期间发生的 NoSuchFileException。
- [修复] 修复了当源为目录时,SHA1 看门狗检查导致集群包崩溃的问题。
- [修复] 修复了由文件锁引起的 Windows 上文件复制失败的问题 — 现在会使用 Bukkit 调度器进行重试。
- [修复] 修复了资源包混合中的主要合并逻辑问题,包括改进对 1.21.4+ 物品模型定义、sounds.json 合并、图集合并以及旧版模型覆盖的处理。
- [新增] 迁移至 NightbreakPluginBootstrap 和 Magmacore 2.0.0-SNAPSHOT。
Resource Pack Manager 1.7.1:
- [新增] 添加了 ItemsAdder 兼容性检测——如果存在 ItemsAdder 但未配置为与 ResourcePackManager 协同工作,OP 玩家在加入时将会收到警告。
- [新增] 添加了 /rspm itemsadder configure 命令,用于自动配置 ItemsAdder 以支持 ResourcePackManager 托管(禁用 ItemsAdder 托管和文件保护)。
- [新增] 添加了 /rspm itemsadder dismiss 命令,用于永久关闭 ItemsAdder 警告。
- [新增] 当所有资源包稳定且合并后的资源包将在 5 秒后发送时,OP 玩家现在会收到通知。
- [修复] 修复了 JSON 文件冲突处理——不再合并不适用于合并的 JSON 文件(如自定义模型、方块状态、装备层等),而是直接替换,从而防止数组损坏和文件破坏。
- [修复] 修复了集群模式下的文件冲突处理——集群模式中的文件现在正确使用冲突解决系统,而不是一味覆盖。
- [修复] 修复了 BetterHUD 兼容性——此前错误地指向了 BackpackPlus 文件夹而非 BetterHUD 文件夹,且被错误标记为加密。
- [修复] 将资源包稳定性检测时间从 10 秒缩短至 3 秒,以加快处理速度。
- [修复] 在发送合并后的资源包前增加了 5 秒延迟,以便管理员在需要时有时间做出反应。
Resource Pack Manager 1.7.0:
- [新增] 为 1.20.3+ 服务器添加了通过 addResourcePack API 支持多个资源包的功能,允许 ResourcePackManager 与其他发送资源包的插件共存。
- [新增] 为兼容插件添加了“集群”模式——允许在单个插件文件夹中处理来自子目录的多个资源包。
- [新增] 添加了与 MegaBlockSurvivors 的兼容性。
- [新增] 更新了 EliteMobs 兼容性以使用新的集群模式,现在从 resource_pack 文件夹而非 exports 读取。
- [修复] 改进了稳定性检测——资源包现在需在无变更状态下等待 10 秒才被视为稳定(此前为 3 秒)。
- [修复] 添加了 SHA1 比较以检测未变化的资源包,防止重载时不必要的重新处理。
- [修复] 改进了对加密或损坏资源包的错误处理——现在会优雅地跳过它们而不是引发错误。
- [修复] 修复了处理 mixer 文件夹内容时可能出现的空指针异常。
- [修复] 修复了 mixer 文件夹中的非 zip 文件和目录可能导致处理错误的问题。

Paper
Spigot