钯优化器

钯优化器

削减Satsu Iron man、Echoes of Power和A New Corps脚本每帧的实体开销。

Palladium Optimizer

针对使用 Palladium 附加模组的整合包的性能修复。每项修复独立生效,且仅会针对你实际安装的模组启用。你不需要安装 Echoes of Power、A New Corps 或任何特定的附加模组。 缺失的部分会被直接跳过,不会导致任何问题。

修复 1:加快带有大型 Palladium 附加模组的游戏启动速度(1.1.0 新增)

问题所在

Palladium 会从附加模组内部加载 KubeJS 脚本。对于每一个脚本,它都会为该模组创建一个全新的资源包对象,仅仅是为了读取一个文件。

安装了 ModernFix(在整合包中非常常见)后,每个新的资源包对象在首次使用时都会构建该模组 jar 的完整索引。因此,一个大型附加模组会每个脚本都对其整个 jar 重新索引一次。

以我们整合包中的例子:Satsu Iron Man Addon(约 7,800 个文件和 190 个客户端脚本)被重新索引了 190 次,导致加载界面卡死约 30 秒。

此模组的作用

Palladium 现在会为每个模组复用一个资源包对象,而不是为每个脚本都创建一个新的。jar 只会被索引一次。

  • 相同的脚本、相同的顺序、相同的内容。模组 jar 在游戏运行期间不会改变,因此复用资源包的结果完全一致。
  • 在我们的整合包中,安装 Satsu Iron Man Addon 后,启动时间从 约 135 秒降至约 91 秒,与未安装该模组时相同。
  • 它适用于任何 Palladium 附加模组。模组越大,收益越大。没有安装 ModernFix 时收益较小,但仍然安全。

修复 2:来自 Echoes of Power / A New Corps 刻脚本的服务器卡顿

问题所在

这些附加模组内置的两个 KubeJS 脚本每个服务器刻都会运行(每秒 20 次),并在 JavaScript 中遍历每个已加载维度中的每个实体:

  • Echoes of Power – kubejs_scripts/property.js:对于每个活体实体,它会构建一个包含 7 项检查的列表,并每刻调用 palladium.setProperty 7 次。
  • A New Corps – kubejs_scripts/breedingtest.js:每刻遍历所有实体,仅仅是为了查找带有 pink 标签的弹射物。

在一个加载了数千个实体的繁忙服务器上,这会累积成每刻数万次 JavaScript → Java 调用。服务器会越来越落后("Can't keep up!"),直到看门狗以*"A single server tick took 60.00 seconds"*将其终止。

此模组的作用

当服务器加载脚本时,Palladium Optimizer 会仅替换这两个文件中开销巨大的刻循环。文件中的其他所有内容均保持原样。

  • Echoes of Power: 实体扫描现在在 Java 中运行,并调用与原脚本相同的 palladium.setProperty。只有当实体不带有 7 个 EOP 标签中的任何一个,且在上一个刻已将全部 7 个属性设置为 false 时,才会跳过该实体。在这种情况下,原脚本只会用 false 覆盖 false,而在 Palladium 中这不会改变任何内容,也不会发送任何数据包。
  • A New Corps: 脚本现在只会接收到带有 pink 标签的实体,其原有逻辑在这些实体上保持不变地运行。

结果与原脚本相同,但每个实体的开销大大降低。

可选模组:只安装你使用的内容

如果你有…… 会发生什么
Echoes of Power 其刻脚本会被优化
A New Corps 其刻脚本会被优化
任何带有 KubeJS 脚本的 Palladium 附加模组(例如 Satsu Iron Man Addon) 启动速度更快
ModernFix 启动修复的收益最大
以上都没有 该部分不做任何事,也不会出现问题

你可以全部安装、安装部分或一个都不安装。每项修复都是独立的。

安全性

  • 刻修复仅当脚本匹配其制作时对应的确切版本时才会应用(Echoes of Power 3.3.0 和当前的 A New Corps)。如果任一附加模组更新且代码发生变化,本模组会保持其原样,并向日志写入一条警告。它绝不会修补无法识别的脚本。
  • 启动修复在 Palladium 中使用了一个小的可选 mixin(已通过 Palladium 4.5.9 测试)。如果未来的 Palladium 版本更改了该代码,该 mixin 将不会被应用。不会崩溃,游戏会像未安装本模组一样加载。
  • 不修改其他模组的文件。

如何检查其是否正常工作

在 logs/latest.log 中查找以下行。只有当安装了匹配的模组时,对应行才会出现:

[Palladium Optimizer] Cache de packs de mod do Palladium ativo (evita reindexar o jar a cada script).
[Palladium Optimizer] Correcao aplicada: addonpack_eop:kubejs_scripts/property.js
[Palladium Optimizer] Correcao aplicada: addonpack_a_new_corps:kubejs_scripts/breedingtest.js

前置要求

  • Minecraft 1.20.1 – Forge 47+
  • KubeJS 2001.6+
  • Palladium 4.x

其他所有内容(Echoes of Power、A New Corps、ModernFix、其他附加模组)均为可选。见上表。

安装

将 jar 放入客户端和/或服务器的 mods 文件夹中。

  • 客户端: 加快游戏启动速度。
  • 服务器: 刻修复,以及为带有服务器脚本的附加模组加快启动速度。

加入服务器不要求安装它。没有安装它的玩家可以正常连接。它在单人游戏中也可用。

注意事项

  • 一种边界情况:如果管理员用命令在某个不具备匹配标签的实体上手动设置了这 7 个 EOP 属性之一,原脚本会在下一个刻将其重置,而本模组不会。
  • 这是一个非官方修复,与 Echoes of Power、A New Corps、Palladium 或 ModernFix 的作者无关。