mcMod:1.1:制作第一个附魔

# mcmod

因为附魔不需要画贴图,所以说我们将其作为我们的第一个mod

首先肯定就是创建声明,使得我们的mod能够正常被挂载

一、创建mod声明

1. mcMod.info

这个文件夹貌似是用来显示mod信息的文件
其中modid用于匹配名称和说明,这个文件并不是必要的文件

这里需要更改的地方挺多:
- modid:系统识别码(需要保证唯一 - name:给玩家看的 - description:描述,给玩家看的 - authorList:作者列表 - credita:致谢 pFujTDH.png

2. 更改包名

将包名更改为com.XLXZ.modid

比如下面:

pFujbVA.png

3.更改声明

然后再在框架中更改modid和name:

pFujqUI.png

4.更改资源文件夹名称

pFKwYUf.png
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
这里有一个十分大的大坑,报错如下:
~~~
net.minecraftforge.fml.common.LoaderException: java.lang.ClassNotFoundException: ClientProxy
~~~
`ClientProxy`出现异常

出现这个问题的原因是编译器在执行refactor的时候,如果你勾选了`Compact middle Package`的话,对于`com.作者名称.mod`名称的重命名会出现异常。

具体而言就是`src\main\java\com\作者名\模组ID\util`里面的`CLIENT_PROXY_CLASS`不能被正确重命名

建议去除勾选再次重命名即可

![pFKyZVA.png](https://s11.ax1x.com/2024/01/30/pFKyZVA.png)

> 这个bug在后续的idea中被修复,属于编译器bug

具体可以参考这个:[湖面群日常·传统头衔二 - 哔哩哔哩 (bilibili.com)](https://www.bilibili.com/read/cv17173344/)

二、创建附魔

对着抄就可以了,对应的位置在:
IdeallandFramework-master\src\main\java\com\XLXZ\testmod\enchantments

1
2
3
4
5
//Example Enchant  
// public static final ModEnchantmentBase ANTI_VANILLA = new ModEnchantmentBase("testmod.anti_vanilla", Enchantment.Rarity.UNCOMMON, EnumEnchantmentType.WEAPON, mainHand)
// .setMaxLevel(10).setValue(0.3f, 0.3f);

public static final ModEnchantmentBase test_Enchance = new ModEnchantmentBase("testmod.test_enchance", Enchantment.Rarity.UNCOMMON, EnumEnchantmentType.WEAPON, mainHand);
  • Enchantment.Rarity.UNCOMMON指的是稀有程度
  • EnumEnchantmentType.WEAPON指的是附魔类型
  • mainHand设置是主手还是副手效果

此处注意需要导入EnumEnchantmentType对应的头文件

另外,可以在src/lang中设置语言翻译,完成之后效果如图:

pFK6wFI.png

Reference