提供: 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=Item}}
+
{{チュートリアルカテゴリー|difficulty=0|type=Enchantment}}
  
ここでは、1.14.x以降のアイテムの追加の方法を解説します。
+
ここでは、1.14.x以降のエンチャントの追加の方法を解説します。
 
 
<b><span style="color:#cc0000;font-size:32px">注意:このページは編集中です</span></b>
 
  
 
==ソース==
 
==ソース==
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だけ記述するようになったので注意です。
  
Item型のコンストラクターを定数に代入します。
+
Enchantmentを継承したクラスを作って、レア度、エンチャントタイプ、エンチャントできる部位の設定をします。
  
コンストラクターの中のItem.Propertiesのコンストラクターでアイテムの色々な設定をします。
+
setRegistryName(new ResourceLocation(SampleMod.MOD_ID, (エンチャント名)  ))でエンチャント名を指定します。
  
Item型のコンストラクターで.setRegistryName(new ResourceRocation(SampleMod.MOD_ID, アイテム名))は絶対に要ります。
+
public int getMaxLevel()で最大レベルを返します。
  
テクスチャモデルの設置フォルダはassets.(モッドid).models.item.(アイテム名)になります。
+
翻訳名はenchantment.(モッドid).(エンチャント名)です。
  
テクスチャの設定はMinecraft Wiki([//minecraft.fandom.com/ja/wiki/モデル モデル])にありますのでそちらを見てください。
+
これで無機能エンチャントの追加ができるので、あとは適当にOverrideしたり、EventBusSubscriberのEventで処理をしたらできます。

2021年11月3日 (水) 13:16時点における版

この記事は"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で処理をしたらできます。