随着上一个正式版本的发布,南瓜的相关工作进入下一个阶段,这次更新我们为南瓜添加了大量的实体 AI 和更多的性能优化
(≧∇≦)🎃
将基岩版协议移植至 1.26.60 (#4407)
使用 NetherNet 替代 RakNet 处理 Ping 与连接 (#4427)
实现了基岩版物品栏事务、战斗机制对齐、玩家移动、容器/装备/拴绳同步,以及登录白名单/封禁强制执行 (#4397, #4428)。
村民大脑重构与村庄机制:将村民从旧版目标系统迁移至 Brain AI 框架,新增类型化 POI 管理器、日程表、村庄传感器、工作点与 POI 寻路,以及工作/休息/恐慌/交易/开门行为、睡眠、八卦、铁傀儡召唤、繁殖和基于群系的结构村民初始化。
动态注册表管理器与成就条件引擎:实现了支持运行时数据包加载器的 `DynamicRegistryManager` (#4370),以及基于完整战利品谓词评估的成就条件触发器 (#4369)。
生物与实体对齐大幅扩展:完整移植原版生物机制,涵盖硫磺立方体、青蛙与蝌蚪、马系与骆驼、羊驼与行商羊驼、流浪商人、村民、铁傀儡、猫 (#4493)、末影人 (#4490)、末影螨 (#4481)、鹦鹉 (#4486)、蝙蝠 (#4304)、兔子、哞菇、海豚、鱿鱼与发光鱿鱼、鲑鱼 (#4291)、河豚 (#4302) 及热带鱼 (#4303)等生物 AI。
(在下一个版本中,我们会添加更多的生物 AI,全部的生物 AI 预计将在年底或年初完成全部移植)
世界生成与空间查询性能优化:区块生成 CPU 耗时减少约 25% (#4401),同时优化了噪声路由、结构放置、实体追踪及玩家空间查询性能。
(关于具体的性能说明,请查阅官方文档:https://docs.pumpkinmc.org/about/benchmarks)
运行时解耦与可嵌入服务器生命周期:将 Tick 模拟、计算池与 Tokio 运行时解耦,并将服务器生命周期与操作系统进程解耦,以支持库嵌入模式 (#3771)。
(本次改动后,将允许各类其他重写的客户端或原版客户端,将南瓜作为客户端单人模式的内置服务器来使用)
MSRV 升级至 1.97.0 及 x86-64-v3 发布构建:最低支持 Rust 版本 (MSRV) 更新至 1.97.0 (#4425);Docker 镜像从 musl 切换至 glibc (#4390);新增 x86-64-v3 优化的 Release/Nightly 二进制文件,并在 Docker 及 Pterodactyl 面板配置中支持自动 CPU 特性检测。
硫磺立方体(Sulfur Cube): 移植了硫磺立方体的实体行为、原型、分裂数据传播、流体跳跃阈值及穿透检测。
青蛙与蝌蚪对齐: 移植了青蛙的 Brain AI(包括鸣叫、大跳跃、寻找陆地、产卵,以及用舌头攻击岩浆怪掉落蛙明灯),并完整对齐了蝌蚪的特性。
马系、骆驼与骑乘: 将马类生物重构为 AbstractHorse,移植了马、驴、骡、骷髅马、僵尸马和骆驼的对齐特性;锁定了坐下时骆驼的身体旋转,防止被骑乘的马被推动,并使用提取的载具挂载数据来安置骑手。
羊驼、行商羊驼与流浪商人: 移植了羊驼和行商羊驼的行为、followMommy(跟随母亲)目标继承、流浪商人的特性对齐,以及流浪商人与行商羊驼的自然伴生生成。
村民与铁傀儡对齐: 完善了村民的 Brain AI,修复了交易界面的死锁问题,并完成了铁傀儡的对齐(包括村庄巡逻/返回目标)。
移植了鲑鱼 (#4291)、河豚 (#4302) 和热带鱼 (#4303) 的对齐特性。
移植了海豚的 AI 目标、氧气供给机制以及寻宝行为。
移植了鱿鱼和发光鱿鱼的行为、水花飞溅效果,并修复了河豚的蛰刺问题。
末影人与末影螨对齐: 移植了末影人 (#4490) 和末影螨 (#4481) 的行为并补充了缺失的末影螨环境音效 (#4495)。
猫、鹦鹉与蝙蝠对齐:
实现了完整的猫原版对齐 (#4493);在专属的元数据槽位中发送特定物种的项圈颜色,以防止 Java 版客户端断开连接 (#4286)。
实现了原版的鹦鹉行为 (#4486)。
实现了原版的蝙蝠对齐特性 (#4304)。
(实在想不明白这玩意到底有啥用
)
兔子、哞菇与被动生物:
移植了兔子的原版特性,以及哞菇的剪毛、喂食可疑炖汤和闪电转化机制。
修复了牛、鸡以及动物喂食机制中剩余的对齐差距。
北极熊现在会保护附近的幼崽 (#4448)。
AI、物理与生命周期:
新增了 Temperament(性情)枚举、数据驱动的狩猎/逃跑表,以及原版目标搜索 (#4107)。
停止为每个生物预分配寻路堆内存 (#4053)。
移植了原版实体存档数据 (#4396)、移动发包 (#4408) 和摔落伤害音效 (#4409)。
移植了具有弹性的拴绳弹簧物理、角动量,以及被拴住生物的跟随行为。
移植了生物共享的物品拾取 AI 步骤、生成时的 CanPickUpLoot(可拾取战利品)判定、finalize_spawn(完成生成)原因,以及基于类别的生物消失距离。
移植了生物的跨越高度处理、摔落伤害覆盖、乘客伤害传递、玩家驾驶载具时的摔落检查、船只乘客控制,以及驯服生物的传送碰撞检测。
移植了蝙蝠、鹦鹉、嘎枝(Creaking)和监守者(Warden)的推挤规则,并对齐了玩家接触区域和推挤速度同步 (#3793)。
将鞍存储在专属的鞍装备槽位中 (#4322)。
修正了史莱姆、幼年僵尸、动物以及装备提供的额外经验值奖励。
将弹射物击中方块归因于被击中的方块 (#4179);允许投掷的弹射物击中玩家。
方块与物品对齐:
对所有已实现的方块和物品行为进行了全面的原版对齐处理。
对苔藓和苍白苔藓使用骨粉时,会生成植被斑块 (#4442)。
未点燃的营火被燃烧的弹射物击中时会被重新点燃 (#3555)。
发射器现在可以将附魔之瓶作为弹射物发射 (#3645);对齐了 26 种发射器弹射物的生成位置和方向 (#4399);并限制了发射器只能为兼容的生物装备盔甲。
对齐了原版水桶放置时的方块替换规则 (#4289)。
在合成配方、交易和战利品表中应用了可疑炖药的状态效果。
支持通过右键点击或受伤交互来装备盔甲和头盔。
流体:
使熔岩的流动、蔓延和交互机制更接近原版 (#4464)。
玩家机制:
移植了恢复指南针的 LastDeathLocation(上次死亡位置)追踪功能 (#4424)。
在服务器运行时从 Tick 线程中保存玩家数据 (#4335)。
世界生成、成就与数据(World Generation, Advancements & Data)
区块生成优化: 区块生成的 CPU 开销减少了约 25% (#4401);同时优化了噪声路由的评估和结构的放置。
世界生成与生成对齐:
将地物(Feature)的生成和区块阶段的调度与原版对齐。
使用与区块生成时相同的高度采样器来定位结构。
检查了刷怪箱的生成规则、水生生物生成位置上方的红石导体,以及雷击闪电。
成就与动态注册表:
实现了带有战利品谓词评估的成就条件触发器 (#4369);并将结构位置条件限制为匹配的边界。
实现了支持运行时数据包加载器的 DynamicRegistryManager(动态注册表管理器)(#4370)。
GameTest(游戏测试): 更新了 GameTest 的结构版本处理方式 (#3919)。
协议与编解码器(Protocol & Codecs):
在分配内存前,对服务端接收的集合长度进行了边界限制 (#3911)。
改进了数据组件编解码器的反序列化,增加了大小检查,并引入了可复用的 read_count 辅助函数 (#4394)。
从单个字节中读取值为零的 LpVector3d (#4308)。
在 1.26.3 及更高版本中,使用 CSwingArm 处理副手挥动动作 (#4338)。
将盔甲纹饰(Armor Trims)编码为注册表引用 (#4101)。
(现在也支持修改相关物品了)
在村民交易报价中发送了“缺货”(out-of-stock)标志。
命令(Commands):
发送了 1.26.3 的参数解析器 ID,并解析了与原版匹配的注册表标识符 (#4311)。
像原版一样,从命令源位置解析本地坐标(^)(#4324)。
在执行 /locate(定位)命令时,跳过当前维度中无法生成的结构 (#4446)。
插件 API 与 WIT:
扩展了 v0.2 版本的玩家和物品栏插件 API,以实现对齐 Bukkit 的特性。
在 v0.2 中将协议的 i8 字段映射为 WIT 的 s8 (#4413);并保留了 v0.1 版本的基岩版数据包兼容性。
服务器生命周期与更新检查器:
新增了内置的 GitHub 版本更新检查器,会在服务器启动时及按固定周期进行检查。
将服务器生命周期与操作系统进程解耦,以支持作为库嵌入使用 (#3771)。
在服务器停止时,干净地关闭管道化的标准输入(stdin)控制台读取器 (#4325)。
对于没有库目标(library target)的受影响 crate,跳过文档测试(doctests)(#4381)。
将 README 中的 CI 徽章链接到了对应的 Workflow 运行记录 (#4170)。
中文交流群:579239869
(内有南瓜测试服,每天更新最新版本)
Github :网页链接
更多更详细的更新内容:网页链接
最后祝大家愉快