前言
本文章是以 Minecraft 1.20.4 版本编写的,使用Fabric
加载器和Yarn
映射,如果你使用官方映射或MCP映射,可在linkie进行转换。
文章中所有的modid
,enchantnid
等都请替换成你自己的模组id和附魔id。
创建附魔类
首先,你需要创建一个继承自Enchantment
的类,然后在类中重写一些方法,如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| public class EnchantID extends Enchantment { public EnchantID() { super(Enchantment.Rarity.UNCOMMON, EnchantmentTarget.WEAPON, new EquipmentSlot[] {EquipmentSlot.MAINHAND}); } @Override public void onTargetDamaged(LivingEntity user, Entity target, int level) { super.onTargetDamaged(user, target, level); } @Override public void onUserDamaged(LivingEntity user, Entity attacker, int level) { super.onUserDamaged(user, attacker, level); }
@Override public int getMinPower(int level) { return 1; } @Override public int getMaxPower(int level) { return this.getMinPower(level) + 5; } @Override public int getMinLevel() { return 1; } @Override public int getMaxLevel() { return 5; } @Override public float getAttackDamage(int level, EntityGroup group) { return 0.0F; } @Override public final boolean canCombine(Enchantment other) { return this.canAccept(other) && other.canAccept(this); } @Override public boolean canAccept(Enchantment other) { return this != other; } @Override public boolean isTreasure() { return false; } @Override public boolean isCursed() { return false; } @Override public boolean isAvailableForEnchantedBookOffer() { return true; } @Override public boolean isAvailableForRandomSelection() { return true; } @Override public boolean isAcceptableItem(ItemStack stack) { Item item = stack.getItem(); return item == Items.DIAMOND_AXE || item == Items.IRON_AXE; } }
|
注册附魔
在onInitialize
方法中注册你的附魔,如下所示:
1 2 3 4 5
| public static final EnchantID ENCHANT_ID = new EnchantID(); @Override public void onInitialize(){ Registry.register(Registries.ENCHANTMENT,new Identifier("mod_id","enchant_id"),ENCHANT_ID); }
|
接下来你需要为它添加语言文件,否则附魔名称会显示为enchantment.mod_id.enchant_id
,在assets/mod_id/lang/zh_cn.json
和en_us.json
中添加如下内容:
1
| "enchantment.mod_id.enchant_id":"附魔名称"
|
小贴士:游戏中如果找不到语言文件会显示为type.mod_id.id
的形式,你只需要在语言文件中添加这个键值对即可。如果找不到对应的语言文件,游戏会自动使用英文语言文件。
大功告成
你的附魔在被注册后会自动添加一本附魔书,你可以使用它为物品附魔。