摘要
- 优化了获取物品的进度触发;
- 可能与原版不兼容,但不会影响原版进度,也不应影响绝大多数模组/数据包;
- 即使影响了某些内容,进度仍应可通过仅放下并拾起所需物品之一来获得;
- 目前没有已知的不兼容性或问题;
- 所有对原版代码的注入都可以在配置文件中禁用。
- 所有更改均在服务器端进行。
结果
在具有3名活跃玩家在线的专用服务器上进行了现场测试,运行自定义Forge模组包,包含超过200个模组和[BlazeandCave's Advancements Pack](
使用Icterine,InventoryChangeTrigger执行速度几乎快了 2.5倍(截至版本1.1.0),花费约7.5%的刻度时间,而不是20%。
Icterine 1.0.0的统计数据比较(约快了2倍):
原版InventoryChangeTrigger的工作方式
- 当游戏检测到玩家物品栏中的堆栈发生更改时,将调用InventoryChangeTrigger。这包括拾取物品,放下物品,放下整个堆栈,移动物品到你的物品栏中。
- 此外,当您打开容器(箱子,熔炉等)时,游戏会认为您的物品栏中的所有插槽都发生了更改,并为所有插槽调用触发器,包括空插槽。
- InventoryChangeTrigger计算您的物品栏中的空插槽,非空插槽和完全填充的插槽数。此信息可以用于进度触发器,但在原版中未使用。
- InventoryChangeTrigger遍历注册的进度条件。
- 如果条件具有插槽数要求,并且它们与步骤2中的值不匹配,或者如果条件没有物品要求,则跳过条件。
- 如果条件仅具有一个物品要求,则检查更改的堆栈是否符合此要求。
- 如果条件具有多个物品要求(例如,“用碎片覆盖我”需要拥有完整的地狱装备套装),则对物品栏中的每个要求都检查每个物品堆栈(但满足的要求会被移除并且不再检查)。
- 物品匹配,特别是标签匹配,非常耗费资源。但是游戏首先检查玩家的物品类型是否与要求中的物品类型匹配,然后才检查其他参数,如数量,附魔和其他NBT数据。
Icterine的优化工作原理
- 在步骤1中,当您放下堆叠或将其移出物品栏时(例如,放入箱子),不调用InventoryChangeTrigger。这由配置文件中的 `ignore_triggers_for_emptied_stacks` 参数控制。
- 同样,在堆栈减少但未被清空时(例如,玩家从完整堆栈中放下单个物品)时,也不调用InventoryChangeTrigger。由 `ignore_triggers_for_decreased_stacks` 控制。
- 同样,如果堆栈大小增加,但未超过任何进度所需的阈值,则也不调用InventoryChangeTrigger。例如,土堆栈大小从52增加到53,但在您的模组包中没有获得53土的进度。由 `optimize_triggers_for_increased_stacks` 控制。
- 修改游戏在玩家打开容器屏幕时如何检查更改的物品,以便它不会在您打开任何内容时立即将所有堆栈视为已更改。由 `initialize_inventory_last_slots` 控制。
- 在步骤6中,首先检查更改的插槽是否与任何要求匹配,然后再检查物品栏中的其他堆栈。由 `optimize_multiple_predicate_trigger` 控制。
- 在步骤7中,首先比较堆栈计数以避免不必要的标签匹配。还使用先前的堆栈计数来避免更多不必要的匹配。由 `check_count_before_item_predicate_match` 控制。
进一步的优化正在计划中。
支持的版本
Icterine v1.2.0与Minecraft Fabric/Quilt 1.18.2至1.19.4以及Forge 1.18.2至1.19.2 (forge moment) 兼容。
Icterine v1.3.0与Fabric/Quilt 1.20至1.20.4,Forge 1.19.3至1.20.4,以及NeoForge 1.20.1至1.20.4兼容,并具有与v1.2.0相同的功能。
在[版本页面](
如果您需要将其移植到其他版本,请在[Discord](
截图:
来自Modrinth
Icterine 1.3.0 NeoForge 1.20.3 - 1.20.4
Icterine-neoforge-1.20.3-4-1.3.0.jar下载1.3.0#Release
Ported to 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4! Fabric, Quilt, Forge, NeoForge!
Icterine now works on any version between 1.18.2 and 1.20.4.
Icterine now works on any version between 1.18.2 and 1.20.4.
展开
版本: 1.3.0
支持游戏: 1.20.3, 1.20.4
类型: NeoForge
Release
下载次数: 816
Icterine 1.3.0 NeoForge 1.20.2
Icterine-neoforge-1.20.2-1.3.0.jar下载1.3.0#Release
Ported to 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4! Fabric, Quilt, Forge, NeoForge!
Icterine now works on any version between 1.18.2 and 1.20.4.
Icterine now works on any version between 1.18.2 and 1.20.4.
展开
版本: 1.3.0
支持游戏: 1.20.2
类型: NeoForge
Release
下载次数: 89
Icterine 1.3.0 Fabric 1.20.3 - 1.20.4
Icterine-fabric-1.20.3-4-1.3.0.jar下载1.3.0#Release
Ported to 1.19.3, 1.19.4, 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4! Fabric, Quilt, Forge, NeoForge!
Icterine now works on any version between 1.18.2 and 1.20.4.
Icterine now works on any version between 1.18.2 and 1.20.4.
展开
版本: 1.3.0
支持游戏: 1.20.3, 1.20.4
类型: Fabric Quilt
Release
下载次数: 44,135
收录