PaperFixes
本模组提供了一系列来自于 CraftBukkit、Spigot、Paper 等服务端的 Bug 修复与性能补丁。
目前还处于早期状态,漏洞与模组不兼容都是可能发生的。
如果你碰到了问题,请去 Github(上方相关链接)新开一个 Issue。
作者推荐安装 兼容 Mixin 0.7-0.8 (Mixin 0.7-0.8 Compatibility),因为有一些模组还在使用老旧的 Mixin 0.7.x,这引起问题的可能性尤其高。
功能
以下功能同时适用于专用服务器与单人游戏/局域网联机时的内置服务端。
让箱子开/关时播放声音的处理过程不在方块实体的 Tick 循环中处理。
刷怪笼在被检测到无效时不会被移除。
MC-54738
爆炸不会影响死亡的实体。
方块密度现在会被缓存起来,从而避免在每次爆炸时都进行费时的查找操作。
MC-80966
玩家断开连接时,放在队列里等待发出的数据会被清空。
MC-133373
MC-98153
整个游戏的游戏刻循环现已被显著改进。在碰到缺失的游戏刻时,游戏将能设法跟上实际的游戏刻进度,而不会直接跳过缺失的部分。PaperFixes 为此功能提供了两种选项,默认为始终设法让 TPS 保持在 19 以上,另一种为发生卡顿(掉刻)时让服务器在处理游戏刻时不休眠,直到跟上实际的游戏刻为止。
新的游戏刻循环还带来了一个新命令:/tps 。使用此命令能快速浏览到过去 5 秒、1 分钟、5 分钟、15 分钟的 TPS 情况。不过作者说目前此命令展示的结果仍不大准确。
Null (通常意味着无效或出错的)方块实体能够在一个具有实体更新的世界内留存,并且在被检测到无效时才会被自动移除。
允许开关出生点的常加载区块,这种区块的细节请自行查阅 Wiki,简单来说:
出生点的常加载区块是一片大小为 25x25 个区块的区域,会一直被游戏加载。
其内一块 19x19 区块大小的区域会有完整的游戏刻处理(不包括随机刻),与有玩家在附近的效果接近。
具有完整游戏刻处理的区域已经相当于 3.5 个玩家的加载面积了(作者是以每个玩家加载 10*10 区块计算的)。
兼容性
PaperFixes 对游戏刻循环的改进有可能与 VintageFix 的 mixin.bugfix.slow_tps_catchup 选项冲突。不过在作者看来,这个选项自身就很容易造成冲突与稳定性问题,本来就应当关闭。
作者曾经在一个同时包括 PaperFixes 与 VintageFix 的整合包中发现一些古怪的区块加载问题,而且这问题无论如何都无法修复。在仅安装 PaperFixes 与 VintageFix 这两个模组时并没有这种问题,因此作者无法确定根本原因。但作者表示,如果你碰到了这种问题,尝试关闭 VintageFix 的 mixin.chunk_access 选项。