Thaumcraft 4 调整

Thaumcraft 4 调整

在科研表中使用鼠标滚轮滚动方面列表,以及其他性能提升

Thaumcraft

关于本模组

这是旧模组神秘时代4的一个附属模组。它不适用于较新的神秘时代5/6版本。此附属模组也仅在 1.7.10 版本上运行。

滚动浏览要素列表

此模组的原始功能。它允许你在研究台中使用鼠标滚轮滚动浏览要素列表。再也不用点击了,耶!当你的鼠标悬停在任何研究笔记上时,模组会提示你滚动功能已启用。

滚动浏览研究页面

这将允许你使用鼠标滚轮滚动浏览书籍中的各个页面(包含描述性文本、配方、奥术结构图等内容的页面)。再也不用点击了,耶!

缩放神秘之书 GUI

修改 .minecraft/config/tc4tweaks.cfg 中的 browserScale 选项。2.0 适用于 1920x1080 分辨率屏幕(标准 GUI 缩放比例下),而 1.0 与原始大小相同。如果你使用其他 GUI 缩放比例或分辨率,可能需要使用不同的值。

2.0 缩放与 1080p 下的神秘之书

修复焦点空指针异常

如果你:

  1. 装备了来自某个 TC4 附属模组的焦点"MyFocus"
  2. 从游戏中移除了该附属模组
  3. 恭喜!如果你之后拿起了这根法杖,你的游戏将会崩溃。

此模组修复了这个问题。

研究标签页排序

"基本信息"标签页很有用,但还没重要到非要让它成为书中的第一个标签页。此模组允许你在运行时通过模组配置菜单重新排列这些标签页。排序功能完全可用,可以按你想要的任何顺序排列,但 GUI 有点原始。这个笨拙的 GUI 将在未来得到改进™。

性能提升

基本上,这会在一定程度上缓解大型整合包中打开奥术工作台时的客户端卡顿。这应该也能减轻玩家在奥术工作台中批量制作 64 个物品时产生的服务器延迟。

限制 GUI 更新

从 1.1.0 版本开始,你可以将奥术工作台制作结果更新频率限制为每 X 个游戏刻更新一次。默认值为 4。如果感觉效果不够明显,可以设置更长的时间。此值可以在运行时通过访问此模组的配置 GUI(Esc | Mod Options | 在模组列表中选择 TC4 Tweaks | Config | general)进行更改,无需重启客户端。

这将在一定程度上缓解法杖充能带来的卡顿。从 1.2.0-beta2 版本开始,仅凭此功能应该就足以修复此卡顿,并大大减少对更激进优化的需求(详见下文)。

其他性能补丁

TC4 中一些随机的卡顿代码被优化得更高效。其中大部分只会影响客户端性能(FPS),但有些即使在专用服务器上也会产生影响。大多数影响服务器的补丁都针对奥术合成卡顿。从 1.2.0-beta12 版本开始,新增了一个旨在修复炼金炉卡顿的补丁。从 1.4.20 版本开始,将减少充能节点检查是否能看到中继器造成的卡顿。总的来说,建议在专用服务器上安装此模组。它确实会带来不同。

如果你对具体细节感到好奇,请参阅技术说明部分。

更激进的优化

从 1.2.0-beta1 版本开始,附带了一个实验性的可选功能,可以防止奥术工作台作为普通工作台使用。这占用了大型整合包中大部分的卡顿。你大概能看出这是一个带有一些副作用的优化。鼓励你在游戏中尝试一下,看看效果如何。

此功能可以在运行时方便地开启或关闭(即无需重启客户端),通过访问此模组的配置 GUI(Esc | Mod Options | 在模组列表中选择 TC4 Tweaks | Config | general)。作为预防措施,仅当 checkWorkbenchRecipes 设置为 false(而非 true)时,此功能才会启用!

即使这听起来像是一个需要在客户端和服务器两端都开启的更改,但事实上,如果服务器禁用了此功能(或者根本没有安装此模组),而客户端启用了它,也能取得良好的效果。建议在专用服务器上关闭此功能,仅在客户端开启。

关于 checkWorkbenchRecipes 的说明

技术说明

本节仅面向各位开发者。如果您觉得难以理解,请不要惊慌。

警告:此文本不常更新。请参考源代码以了解实际情况。

  1. ScanManager#generateItemHash(Item, int) 将不再创建大量字符串。哈希码将直接计算。这与 GT6 的修复冲突,如果检测到 GT6 的加载插件,此功能将不会生效。GT6 的修复将优先。
  2. ResearchCategories#getResearch(String) 现在将使用 HashMap,而不是遍历所有已注册的研究。此 HashMap 将在服务器启动时重新计算。如果服务器尚未完成启动,HashMap 查找将被禁用。
  3. 在客户端仅注入了一个对 TileMagicWorkbench#setInventorySlotContents(IInventory) 的调用钩子。它将更新频率限制为每 200ms 一次。如果有任何更新被丢弃,将会设置一个标志。然后,一个 tick 处理器将尝试每 X ticks(配置值)更新一次,以补偿丢失的更新。
  4. FXSonic 的模型已改为静态,并且仅在资源包重新加载时重新加载。
  5. 在 ThaumcraftCraftingManager 中,findMatchingArcaneRecipe 和 findMatchingArcaneRecipeAspects 获得了一个简单的 LRU 缓存,大小可配置(默认为 16)。缓存满时,旧条目将被淘汰。
  6. 在 TC4 的映射线程开始时,注入了一个 Thread.currentThread().setPriority(1)。如果缓存命中,优先级将恢复为正常,以尝试缓解锁竞争。
  7. GuiResearchRecipeVisitor 同时使用了 synchronized 方法和 ConcurrentMap。现在已移除 synchronized。——如果你在使用此附属模组时遇到任何问题,请将你的问题提交到 GitHub(点击本页顶部的 Issues 标签页)。下方的评论部分不会被我监控,因此你在下方提交的问题/反馈可能在我需要修订此描述之前无法送达我。视频预告片尚未提供。
  8. 在 ThaumcraftCraftingManager 中,getObjectTags 得到了改进。详情请参阅代码。
  9. 对 GuiResearchBrowser 进行了大量更改。详情请参考 net.glease.tc4tweak.asm.GuiResearchBrowserVisitor。
  10. 大多数 TESR 被修补,当区块尚未完全加载时,将不渲染内容。

特别鸣谢

(按列表条目添加的时间顺序,从早到晚)

  • KiloJoel,审阅和编辑了此描述的早期版本
  • GTNH Discord 社区的 Aerospacee,审阅和编辑了俄语的机器翻译。
  • GTNH Discord 社区的 eismcsquare,meganyan,各自为研究和浏览器完成计数器文本的俄语翻译和/或机器翻译审阅做出了贡献。
  • GitHub 上的 UnderscoreKilburn,发现了高级炼金炉渲染代码中的错误。原始 PR 提交至 hodgepodge:https://github.com/GTNewHorizons/Hodgepodge/pull/304