McLists一周年快乐
服务器已经添加了详细介绍信息板块
服主可以在管理后台来提交自己服务器介绍信息。
服务器介绍信息提交后,管理人员会进行审核
审核通过后会在服务器详细页面进行显示
提交服务器介绍信息会让新玩家更好的了解你的服务器哦~
添加图片信息,也会让百度等搜索引擎更好的收录您的服务器哦~
管理平台地址:传送门
Icterine

Icterine - Icterine 柠黄色调

进度优化(具体来说是 InventoryChangeTrigger)
fabric / forge / neoforge / quilt 作者 Mephodio 支持版本 1.18.2 - 1.20.4
下载量
3,203,032
关注数
105
数据来源
Modrinth
模组详细介绍

概要

  • 优化了“获得物品”时触发进度的方式;
  • 可能会与原版行为不完全一致,但不会影响原版进度,且理论上也不会影响绝大多数模组/数据包;
  • 即使真的产生影响,通常也仍然可以通过丢出并重新捡起所需物品之一来获得进度;
  • 目前没有已知的不兼容或问题;
  • 对原版代码的每一处注入都可以在配置文件中禁用。
  • 所有改动都仅在服务端生效。

结果

在专用服务器上进行了实机测试,在线活跃玩家为 3 人,运行的是包含 200 多个模组的自定义 Forge 整合包,并安装了 BlazeandCave's Advancements Pack(新增了 950 多个进度)。使用 Spark 收集了一小时的统计数据。

使用 Icterine 后,InventoryChangeTrigger 的执行速度提高到了将近 2.5 倍(截至 1.1.0 版本),tick 时间占用约为 7.5%,而不是 20%。

Icterine 1.0.0 的统计对比(约快 2 倍):

Statistics

原版 InventoryChangeTrigger 的工作方式

  • 当游戏检测到玩家背包中的某个物品堆发生变化时,就会为其调用 InventoryChangeTrigger。这包括捡起物品、丢出物品、丢出整组物品、在背包中移动物品。
  • 此外,当你打开一个容器(箱子、熔炉等)时,游戏会认为你背包中的所有槽位都发生了变化,并为它们全部调用触发器,包括空槽位。
  • InventoryChangeTrigger 会统计你背包中空槽位、非空槽位和完全填满槽位的数量。这个信息可以在进度触发条件中使用,但原版并未使用。
  • InventoryChangeTrigger 会遍历已注册的进度条件。
  • 如果某个条件有槽位数量要求,而它们与步骤 2 中的值不匹配,或者该条件没有物品要求,则跳过该条件。
  • 如果某个条件只有一个物品要求,就会用发生变化的物品堆来检查该要求。
  • 如果某个条件有多个物品要求(例如 “Cover me with debris” 需要拥有一整套下界合金盔甲),则会用背包中的每一个物品堆去检查每一个要求(但已满足的要求会被移除,不再继续检查)。
  • 物品匹配,尤其是针对标签的匹配,开销非常大。不过游戏会先检查玩家的物品类型是否与要求中的类型一致,然后才会检查数量、附魔和其他 NBT 数据等参数。

Icterine 的优化方式

  • 在步骤 1 中,当你丢出物品堆或将其移出背包(例如放入箱子)时,不调用 InventoryChangeTrigger。此行为由配置文件中的 ignoretriggersforemptiedstacks 参数控制。
  • 类似地,如果物品堆的变化是由于数量减少但未清空(例如玩家从一整组中丢出单个物品),也不调用 InventoryChangeTrigger。由 ignoretriggersfordecreasedstacks 控制。
  • 此外,如果物品堆数量增加,但没有跨过任何进度所需的阈值,也不调用 InventoryChangeTrigger。例如,一组泥土从 52 增加到 53,但你的整合包里并没有“获得 53 个泥土”的进度。由 optimizetriggersforincreasedstacks 控制。
  • 修改玩家打开容器界面时游戏检查变化物品的方式,这样它就不会在你打开任意容器的瞬间把所有物品堆都当作发生了变化。由 initializeinventorylast_slots 控制。
  • 在步骤 6 中,先检查发生变化的槽位是否匹配任意要求,之后才去检查背包中的其他物品堆。由 optimizemultiplepredicate_trigger 控制。
  • 在步骤 7 中,先比较物品堆数量,以避免不必要的标签匹配。同时还会利用变化前的物品堆数量,进一步避免更多不必要的匹配。由 checkcountbeforeitempredicate_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 与 v1.2.0 拥有相同功能,支持 Fabric/Quilt 1.20 - 1.20.4、Forge 1.19.3 - 1.20.4,以及 NeoForge 1.20.1 - 1.20.4。

请使用 versions page 上的筛选器来选择正确的文件。

如果你需要移植到其他版本,请提交 issue,或在 Discord 服务器中询问。

基本信息
模组名称Icterine
作者Mephodio
下载量3,203,032
关注数105
支持版本1.18.2 - 1.20.4
加载器fabric / forge / neoforge / quilt
客户端unsupported
服务端required

友情链接: 网易我的世界 | 泰拉瑞亚 | ocent云计算 | 米饭Minecraft插件文档 | 友链合作

历史访问人数:80,264  |  历史访问人次:168,688

今日访问人数:10,907  |  今日访问人次:11,851

昨日访问人数:20,761  |  昨日访问人次:24,774

Copyright © 2019-2026 我的世界服务器列表站. All rights reserved.

Powered by GermMC 京ICP备17023959号-6