提供: Minecraft Modding Wiki
(ページの作成:「{{前提MOD|reqmod="Minecraft Forge 1.14-28.0.x~"}} {{チュートリアル難易度|difficulty=0|clear=none}} {{チュートリアルカテゴリー|difficulty=0|type=…」) |
|||
1行目: | 1行目: | ||
{{前提MOD|reqmod="Minecraft Forge 1.14-28.0.x~"}} | {{前提MOD|reqmod="Minecraft Forge 1.14-28.0.x~"}} | ||
{{チュートリアル難易度|difficulty=0|clear=none}} | {{チュートリアル難易度|difficulty=0|clear=none}} | ||
− | {{チュートリアルカテゴリー|difficulty=0|type= | + | {{チュートリアルカテゴリー|difficulty=0|type=Enchantment}} |
− | ここでは、1.14. | + | ここでは、1.14.x以降のエンチャントの追加の方法を解説します。 |
− | |||
− | |||
==ソース== | ==ソース== | ||
14行目: | 12行目: | ||
public class SampleMod { | public class SampleMod { | ||
public static final String MOD_ID = "sample"; | 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); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | SampleEnchantment.java | ||
+ | <source lang="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; | ||
+ | } | ||
} | } | ||
</source> | </source> | ||
20行目: | 42行目: | ||
1.13から、@ModにはMOD_IDだけ記述するようになったので注意です。 | 1.13から、@ModにはMOD_IDだけ記述するようになったので注意です。 | ||
− | + | Enchantmentを継承したクラスを作って、レア度、エンチャントタイプ、エンチャントできる部位の設定をします。 | |
− | + | setRegistryName(new ResourceLocation(SampleMod.MOD_ID, (エンチャント名) ))でエンチャント名を指定します。 | |
− | + | public int getMaxLevel()で最大レベルを返します。 | |
− | + | 翻訳名はenchantment.(モッドid).(エンチャント名)です。 | |
− | + | これで無機能エンチャントの追加ができるので、あとは適当にOverrideしたり、EventBusSubscriberのEventで処理をしたらできます。 |
2021年11月3日 (水) 13:16時点における版
この記事は"Minecraft Forge 1.14-28.0.x~"を前提MODとしています。 |
ここでは、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で処理をしたらできます。