-
Notifications
You must be signed in to change notification settings - Fork 0
如何添加双化学反应台和化学反应台(最终型)的配方?
耿悠博 edited this page Nov 1, 2024
·
3 revisions
(模组版本1.0.0~)
首先你需要知道的是双化学反应台的合成文件在哪?
在github/com/gengyoubo/Minecraft_Science/procedures里
你看到了这串代码
public DualReactionProcess() {
// 添加 NaCl 反应
addReaction(new ChemicalReaction("mcse:hcl", 1, "mcse:naoh", 1, "mcse:nacl", 1, "mcse:h2o", 1));
// 添加水的电解反应
addReaction(new ChemicalReaction("mcse:h2o", 1, null, 0, "mcse:h2", 2, "mcse:o2", 1)); // null 表示没有第二个物品
}
你只要按照上面的方式写代码就可以了。那么有人会问了:“我需要写调换的情况吗?”,完全没有必要,因为我已经加了这串代码了。所以在这点你尽管放心。那么该如何添加?
如果你不会写mixin的话可以看看我的一个教程如何制作并且维护你的mod?(forge版)(只支持1.18.X)的mixin篇。
别忘了导入mixin库,在这里我只讲如何写代码。
首先创建一个DRrecipes(也可以自己起名字)
@Mixin(DualReactionProcess.class)
public class DRrecipes{
}
然后使用mixin的尾插入(你也可以头插入,但是为了防止出现bug,听我的)
@Mixin(DualReactionProcess.class)
public class DRrecipes{
@Inject(method = "<init>", at = @At(value = "TAIL")
public NewDualReactionProcess() {
try {
// 获取 addReaction 方法
Method addReactionMethod = DualReactionProcess.class.getDeclaredMethod("addReaction", DualReactionProcess.Reaction.class);
addReactionMethod.setAccessible(true); // 确保可访问
// 获取 ChemicalReaction 构造函数
Class<?> chemicalReactionClass = Class.forName("github.com.gengyoubo.Minecraft_Science.procedures.DualReactionProcess$ChemicalReaction");
Constructor<?> constructor = chemicalReactionClass.getConstructor(String.class, String.class, String.class, String.class, int.class, int.class);
// 创建 ChemicalReaction 实例,下面的是个例子↓
Object reactionInstance = constructor.newInstance("mcse:co2",1 "mcse:h2o",1, "mcse:c6h12o6",6, "mcse:o2",6 );
// 调用 addReaction 方法将新的反应添加到反应列表
addReactionMethod.invoke(this, reactionInstance);
} catch (Exception e) {
e.printStackTrace();
}
}
}
这样就可以添加配方了! 至于最终型的基本格式为
reactions.add(new ChemicalReaction("minecraft:nahco3", 2, null, 0, null, 0, "minecraft:na2co3", 1, "minecraft:co2", 1, "minecraft:h2o", 1));
剩下的基本一样
我有在尝试用json注册法,但是失败了。等我成功了就会继续更新!