锻造台耐久合成(Mixin) 1.21 Fabric
本篇教程的视频:
本篇教程源代码
GitHub地址:TutorialMod-SmithingTransf-1.21
介绍
本篇教程也是由群友提供的代码,我们将通过Mixin的方式,让锻造台也支持耐久合成
从现实角度来讲,类似于工业锤的这种东西,可能更适合在锻造台上进行加工,但是原版的锻造台并不支持耐久合成,所以我们需要通过Mixin的方式来实现这个功能
锻造台耐久合成
创建SmithingRemainderHandler类
在写Mixin类之前,我们先创建一个SmithingRemainderHandler类,这个类是用来传值的
1 | public class SmithingRemainderHandler { |
这里就是设置一个ThreadLocal的ItemStack,用来存储合成后剩余的物品,当然这个只是临时储存
创建SmithingScreenHandlerMixin类
接下来我们创建一个Mixin类,目标类为SmithingScreenHandler,这个是锻造台的屏幕处理器
1 |
|
先看上面一个注入的方法,在decrementStack方法中,我们通过@Inject注解,将itemStack的值传给SmithingRemainderHandler.REMAINDER_STACK,也就是获取物品栏中的物品及其返还物,并通过上面的SmithingRemainderHandler类临时储存
然后再是下面一个方法
同样的目标方法,但位置不同,这里我们通过@ModifyArg注解,将itemStack替换为SmithingRemainderHandler.REMAINDER_STACK中的物品,也就是通过上面的方法临时储存的物品
如果itemStack为空,那么就返回SmithingRemainderHandler.REMAINDER_STACK中的物品,否则返回itemStack
当然,我们还得写对应的锻造台配方,不然它也不会生效
编写锻造台配方
1 | { |
这里我没有用数据生成来写,直接手写的
锻造台的配方其实和之前写的类似,只是这里的type为minecraft:smithing_transform
addition为锻造台的第二个物品,这里就是我们前面写的具有耐久合成的物品
base为锻造台的第一个物品,也就是被加工的物品
result为合成后的物品
template为锻造台的模板,模板这里我拿了原版的netherite_upgrade_smithing_template,也就是下界合金的升级模板,你也可以自己写一个
那么现在,我们就可以启动我们的游戏进行合成了
原作者的代码及其注释












