PRTS | 基于 Arclight/Luminara 二次开发的 1.20.1/1.21.1-多线程 Spigot+Forge 服务端

二次开发 JE核心 PRTS | 基于 Arclight/Luminara 二次开发的 1.20.1/1.21.1-多线程 Spigot+Forge 服务端 2026-08-15

完成注册/登录后下载
版权类型
二次开发
原帖地址
#
适配版本(Java)
  1. 1.21
  2. 1.20
[MD] # PRTS 服务端整合发布说明(1.20.1 / 1.21.1 / 1.21.1 多线程版) > 一个服务端,三个分支:稳定版按游戏版本选,多线程版单独评估。 > 开源项目,GPL-3.0 协议。 --- ## 一、这是什么 PRTS 是一个面向高负载模组服的混合服务端,核心特点是: - **模组 + 插件同服**:Forge / NeoForge 模组和 Bukkit / Spigot 插件可以同时运行。 - **项目血统**:Arclight(混合端)→ Luminara → PRTS(由 ElainAwa 维护)。 - **无感优化**:不改游戏玩法,只降低同样逻辑的服务器资源消耗,并修复大量模组服生产环境中的崩溃。 > 所有版本的 jar 请到 GitHub Releases 页面手动选择下载,后续版本更新以 Releases 页为准: > https://github.com/ElainAwa/PRTS-SERVER/releases --- ## 二、稳定版:1.20.1 + 1.21.1 两个稳定分支功能几乎一致,主要区别只是游戏版本和加载器,按你的整合包版本选即可。 | 分支 | 游戏版本 / 加载器 | 当前版本 | |---|---|---| | PRTS-1.20.1 | 1.20.1 / Forge 47.4.16 | v1.0.66 | | PRTS-1.21.1 | 1.21.1 / NeoForge 21.1.248 | v1.0.29 | ### 共同特性 - Forge / NeoForge 模组 + Bukkit 插件同服:两边生态可以一起用。 - ServerCore 全套移植:激活范围、繁殖上限、刷怪控制、动态配置、指令与统计。 - routeB 空间化实体追踪(AreaMap):替代原版全量实体广播,玩家附近实体追踪更省 CPU。 - 区块票据延迟传播(ticketpropagator):优化区块加载票据扩散,降低传送 / 跑图尖峰。 - 零速度跳过 / 异步日志:低感知优化。 - NearbyPlayerIndex 空间玩家索引:玩家查找更省。 - ClientModGuard:客户端模组预检 + 启动崩溃自愈,减少“坏客户端模组炸服”。 - 大量模组兼容崩溃修复:长期在 250+ 模组科技整合包上实际运行和修复。 > 1.21.1 分支在此基础上还有动力铁轨优化、主线程卡顿看门狗 / 线程耗时统计、可选开启的可靠区块保存(WAL journal)。 --- ## 三、多线程版:1.21.1-Multithreading - 单独一条技术路线:在 1.21.1 稳定版基础上,把原来单线程的世界 tick 拆到多个工作线程,定位是多线程工程验证版,目前仍有许多bug。 - 主线程只做调度与同步:维度 worker、区域 worker 与独立子任务池承担重负载计算,玩家与世界权威写入保持主线程。所有并行子系统都有兜底路径,环境过载或不兼容时按序降级,而不是卡死或损坏存档。 ## 并行引擎 将单线程世界 tick 拆分为多线程执行,以下功能全部默认开启: - **异步寻路** (`pathfinding-async`):怪物/村民寻路在工作线程计算,并复用有效导航路径 - **维度并行** (`dimension-parallel`):主世界/下界/末地在独立 worker 线程 tick - **区域并行** (`region-parallel`):实体按区块条带划分为多个区域并行 tick - 区域数 2/4/8/16(`region-count`,默认 4) - 按负载自动增减区域(`region-auto-scale`) - 不等宽条带:繁忙区域向相邻区域让渡边界组(`uneven-stripes`) - **实体批并行** (`entity-batch-parallel`):区域内的实体阶段再扇出到子任务池,村民等持久化生物离开主线程 tick - **区块环境并行** (`chunk-env-parallel`):随机刻/流体刻扇出到子任务池,并用 3×3 区块锁(`chunk-env-lock`)保证相邻区块不会并发写入 - **方块实体分档调度** (`be-parallel-allow` / `be-main-thread-force`):Create 方块实体默认在区域 worker 上 tick;已知必须主线程的类型(Create 轨道、红石链、移动储存接口、注液器、Lootr 箱子)锁定主线程 - **异步传送门** (`portal-async`):传送进入未生成区块时提交异步加载,而不是卡住 worker - **无玩家维度多 tick** (`dimension-worker-multitick`,默认 4):无玩家维度每个 barrier 会话可连 tick 多次,更快消化积压 ### ThreadPolicy 自动学习 运行时检测 worker 访问主线程专属 API(`getBlockEntity` / `setBlock` 等)的违规,自动把不安全实体类路由回主线程: - 滑动窗口统计(默认 2400 tick;窗口内 5 次违规触发路由) - 路由持久化(`config/prts-learned-routes.json`,启动加载 / 关服保存) - 双向 Probation:被路由的类定期回 worker 试跑,成功后恢复并行(指数退避) - 安全阀:worker 异常 → 永久降级主线程 - 默认策略 `thread-policy: stats` 只统计不拦截;`enforce` 仅用于测试服定位 ## 区块系统 - **细粒度状态机** (`chunk-system-enabled`):区块生成按「区块 × 状态」拆成任务,带优先级与依赖门控并行调度,新地形按序到达且多区块同时推进 - **并行 worldgen 调度器** (`chunk-system-scheduler`):依赖门控的 worldgen 任务图在工作线程执行,FEATURES 前后使用分级锁域 - **需求调度**:每 tick 需求预算(`chunk-demand-per-tick`)、最低排空窗口(`chunk-demand-min-drain-ms`)、按玩家距离分桶优先且带饥饿兜底(`chunk-demand-player-priority`)、区块发送速率下限(`chunk-send-rate-floor`,默认 128 块/tick) - **方向感知预取** (`chunk-prefetch`):沿移动方向预铺窗口与走廊、静止时后台预生成(`idle-enabled`)、登录预热(`login-warmup-enabled`) - **异步区块 IO** (`chunk-async-io-enabled`):区块反序列化离开主线程 - **生成预算**:每 tick 提交上限(`generation-tasks-per-tick`)、滚动 2 秒窗口(`chunkgen-inflight-limit`)、堆压力卫兵(`generation-memory-guard-*`)在逼近堆上限时降速或暂停生成;`-Xms` 与 `-Xmx` 相同的启动参数同样适用 ## Barrier 与故障处理 - Watchdog 感知(`barrier-watchdog-aware`):并行等待不误触发看门狗强杀 - 软降级(`barrier-soft-degrade`,默认开):主线程落后时,晚到的区域跳过本轮剩余工作,而不是拖住全服 - 硬超时动作(`barrier-timeout-action`,默认 `degrade`):真卡死时该维度退回主线程串行并自动恢复(`barrier-timeout-recover-ticks`);`crash` 则 dump 全线程后停机 - 整服兜底(`on-fault-fallback-vanilla`):连续硬超时后退回原版串行 tick,重启恢复 ## 模组兼容 - **Create**:动力网络拓扑变更加锁串行,无源分裂网络自动愈合,锁链与应力仪表保持正确。装配器、移动储存接口、溜槽、注液器安全路由;长轨道假轨栅格化跨 tick 分摊(`create-track-lazy-spread`);传送带乘客注册延迟到主线程 - **Minecolonies**:殖民地 NPC 在区域 worker 工作(安全方块实体读取),工作 AI 相位错峰(`colony-npc-phase-stagger`),工作间隔可配置 - **Lithium**:检测到 Lithium 时生成驱动收口主线程,规避其线程检查 - **Sable / Simulated**:绳索物理的 native 入口已串行化,目前只解决跨线程 native 死锁导致的崩溃;物理结构仍存在 bug,属后续修复方向 - **SuperbWarfare**:引擎侧适配——弹道局部查询、IFF 节流、广播裁剪;可选载具休眠(`sbw-vehicle-sleep`) ## 事件桥与主分支优化 与主分支 `1.21.1` 对齐: - 事件桥按需注册 Bukkit/Forge 转发器,无插件监听时短路跳过(`event-bridge.*`、`event-shortcircuit.*`) - 实体空间索引、POI 查询预检、碰撞收集批处理、邻居更新熔断(默认开) - 光照:每 tick 传播预算(`lighting.budget-*`)与独立光照线程(`lighting.threaded`) - 看门狗、实体清理、AE2LT 节流、可靠区块保存(WAL) - 容器菜单广播预检(`menu-broadcast`,默认关——先实测归因再开) - Moonrise 快速调色板读取路径已移植(默认未注册,待验证) ## 配置 `prts-features.yml`(服务端根目录)首次启动自动生成,每个配置项都带一行注释。注释默认中文,把 `locale` 改为 `en_us` 并重启即可切换为英文;旧配置文件缺失的新配置项会自动补齐。 主要开关(生成时的默认值): ```yaml locale: zh_cn # 配置注释语言(zh_cn / en_us) parallel: pathfinding-async: true # 异步寻路:工作线程计算 dimension-parallel: true # 维度并行:各维度独立 worker tick region-parallel: true # 区域并行:实体按区块条带并行 tick region-count: 4 # 区域数(2/4/8/16) region-auto-scale: true # 按负载自动增减区域数 entity-batch-parallel: true # 实体阶段扇出到子任务池 chunk-env-parallel: true # 随机刻/流体刻进子任务池 portal-async: true # 未生成区块的传送门异步加载 thread-policy: stats # worker 世界访问策略:off/stats/enforce main-thread-routing: auto # 违规实体类自动路由回主线程 route-threshold: 5 # 触发路由的违规次数 route-window-ticks: 2400 # 违规统计窗口(tick) chunk-system-enabled: true # 区块×状态细粒度状态机 chunk-send-rate-floor: 128 # 区块发送速率下限(块/tick) be-parallel-allow: ["create:*"] # 允许在区域 worker tick 的方块实体 barrier-soft-degrade: true # 晚到区域跳过本轮剩余工作 barrier-timeout-action: degrade # 硬超时:降级串行并自动恢复 dimension-worker-multitick: 4 # 无玩家维度每会话 tick 数 chunk-prefetch: enabled: true # 沿玩家移动方向预取 idle-enabled: true # 静止时后台预生成 generation-tasks-per-tick: 50 # 每 tick 生成提交上限 chunkgen-inflight-limit: 128 # 滚动 2 秒提交窗口 generation-memory-guard-enabled: true # 堆压力高时降速生成 barrier-watchdog-aware: true # 并行等待时不误触发看门狗 barrier-timeout-ms: 120000 # barrier 卡死超时(毫秒) ``` 全部设为 `false` 即退回单线程行为,可以当作普通 1.21.1 稳定版使用。 > 多线程分支为工程验证定位:并行引擎默认开启,建议先小范围测试,确认与整合包无冲突后再上生产。 --- ## 四、通用运行要求 - Java 21:推荐 Adoptium Temurin 21,低于 21 无法启动。 - 内存建议:中小型整合包 4G 起步,大型整合包 8G–16G。 --- ## 五、兼容性说明 - 支持 Forge / NeoForge 模组与 Bukkit / Spigot 插件同服。 - 可与常见优化模组共存(如 ModernFix、FerriteCore、PacketFixer、Spark 等,具体按版本验证)。 - 不建议再安装重复功能的 Bukkit 优化插件,可能互相打架。 - 多线程分支与部分“全局可变图结构”类红石优化模组有兼容回退逻辑;遇到具体模组问题请带日志反馈。 --- ## 六、许可与第三方署名 - 本项目整体以 GPL-3.0 开源。 - 借鉴 / 移植的第三方代码(ServerCore、VMP / HariPlayer、Mohist、Youer、Paper 等)均保留原作者版权与许可声明,集中登记见 [THIRD-PARTY.md](https://github.com/ElainAwa/PRTS-SERVER/blob/1.20.1/THIRD-PARTY.md)。 - 完整许可证:仓库根目录 `LICENSE`。 [/MD]
作者
Elysialwl
下载
4
查看
166
首次发布
最后更新

评分

0.00 星 0 次评分
后退
顶部 底部