让 1.12.2 的 CraftTweaker 合成可以热加载。模组只支持原版合成,是作者研究 Forge 注册表时的副产物,即合成注册表备份还原。
实现热加载并不复杂,只是步骤较多:
新建一个 class,在里面写入 static List<Runnable>。
通过反编译和重编译修改 MoT 和 CrT 的代码,在调用 MoT 和 CrT 每个合成修改方法时,以下三条方法任选其一:
add:往 listen 加入 remove(recipe),remove:记录被 remove 的内容;
提供一个“合成表快照”;
获取一个“重置方法”。
简而言之,消除它们作用效果的“反代码”。然后重载时把它们还原,再按照 CTRL 里的代码让 CrT 重载脚本。
使用方法:
/refresh_recipe
注意:JEI 内的合成不会刷新,如果要刷新,使用下面的指令:
/texture_reload
先执行 /refresh_recipe 再执行 /texture_reload,这个指令会重新加载资源包,并发生几秒钟的卡顿。
此外还有一个指令用于修改手上物品的 NBT:
/itemdata [NBT]