提供: Minecraft Modding Wiki
移動先: 案内検索
 
50行目: 50行目:
 
翻訳名はenchantment.(モッドid).(エンチャント名)です。
 
翻訳名はenchantment.(モッドid).(エンチャント名)です。
  
これで無機能エンチャントの追加ができるので、あとは適当にOverrideしたり、EventBusSubscriberのEventで処理をしたらできます。
+
これで無機能エンチャントの追加ができるので、あとは適当にそれっぽいのをOverrideしたり、EventBusSubscriberのEventで処理をしたりします。

2021年11月26日 (金) 13:55時点における最新版

この記事は"Minecraft Forge 1.14-28.0.x~"を前提MODとしています。

Wood pickaxe.png
初心者向けのチュートリアルです。
C none.png
Enchantmentに関係のあるチュートリアルです。


ここでは、1.14.x以降のエンチャントの追加の方法を解説します。

ソース[編集]

SampleMod.java

/*パッケージ・インポートは省略*/
@Mod(SampleMod.MOD_ID)
public class SampleMod {
    public static final String MOD_ID = "sample";

    public static final Enchantment sample_enchantment = new SampleEnchantment(Rarity.RARE, EnchantmentType.ARMOR_FEET, EquipmentSlotType.FEET);

    @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
    public static class SampleModEventBus {
        @SubscribeEvent
        public static void registerEnchantments(final RegistryEvent.Register<Enchantment> event) {
            event.getRegistry().register(sample_enchantment);
        }
    }
}

SampleEnchantment.java

public class SampleEnchantment extends Enchantment {

    protected SampleEnchantment(Rarity rarityIn, EnchantmentType typeIn, EquipmentSlotType... slots) {
        super(rarityIn, typeIn, slots);
        this.setRegistryName(new ResourceLocation(SampleMod.MOD_ID, "sample_enchantment"));
    }

    public int getMaxLevel() {
        return 5;
    }
}

解説[編集]

1.13から、@ModにはMOD_IDだけ記述するようになったので注意です。

Enchantmentを継承したクラスを作って、レア度、エンチャントタイプ、エンチャントできる部位の設定をします。

setRegistryName(new ResourceLocation(SampleMod.MOD_ID, (エンチャント名) ))でエンチャント名を指定します。

public int getMaxLevel()で最大レベルを返します。

翻訳名はenchantment.(モッドid).(エンチャント名)です。

これで無機能エンチャントの追加ができるので、あとは適当にそれっぽいのをOverrideしたり、EventBusSubscriberのEventで処理をしたりします。