锻造台耐久合成(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
,也就是下界合金的升级模板,你也可以自己写一个
那么现在,我们就可以启动我们的游戏进行合成了