1.11のエンチャント追加

提供:Minecraft Modding Wiki
移動: 案内, 検索

この記事は"Minecraft Forge Universal 13.19.0.xxx~"を前提MODとしています。

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

ItemStackに付与できるエンチャントの追加方法。

[編集] エンチャントの追加

[編集] ソースコード

  • SampleMod.java
  1. package com.example.ench;
  2.  
  3. import net.minecraft.enchantment.Enchantment;
  4. import net.minecraftforge.event.RegistryEvent;
  5. import net.minecraftforge.fml.common.Mod;
  6. import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
  7. import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
  8. import net.minecraftforge.fml.common.registry.GameRegistry.ObjectHolder;
  9.  
  10. @Mod(modid = SampleMod.MOD_ID, name = SampleMod.MOD_NAME, version = SampleMod.MOD_VERSION, dependencies = SampleMod.MOD_DEPENDENCIES, acceptedMinecraftVersions = SampleMod.MOD_ACCEPTED_MC_VERSIONS, useMetadata = true)
  11. @EventBusSubscriber
  12. public class SampleMod{
  13.     /**
  14.      * ModID文字列
  15.      */
  16.     public static final String MOD_ID = "samplemod";
  17.  
  18.     /**
  19.      * MOD名称
  20.      */
  21.     public static final String MOD_NAME = "SampleMod";
  22.  
  23.     /**
  24.      * MODのバージョン
  25.      */
  26.     public static final String MOD_VERSION = "0.0.1";
  27.  
  28.     /**
  29.      * 前に読み込まれるべき前提MODをバージョン込みで指定
  30.      */
  31.     public static final String MOD_DEPENDENCIES = "required-after:forge@[1.11-13.19.0.2130,)";
  32.  
  33.     /**
  34.      * 起動出来るMinecraft本体のバージョン。記法はMavenのVersion Range Specificationを検索すること。
  35.      */
  36.     public static final String MOD_ACCEPTED_MC_VERSIONS = "[1.11]";
  37.  
  38.     @ObjectHolder(MOD_ID)
  39.     public static class ENCHANTMENTS{
  40.         public static final Enchantment sample_ench = null;
  41.     }
  42.  
  43.     @SubscribeEvent
  44.     protected static void registerEnchantments(RegistryEvent.Register<Enchantment> event){
  45.         event.getRegistry().registerAll(
  46.                 new SampleEnchantment().setRegistryName(MOD_ID, "sample_ench")/*登録名の設定*/
  47.         );
  48.     }
  49. }
  • SampleEnchantment.java
  1. package com.example.ench;
  2.  
  3. import net.minecraft.enchantment.Enchantment;
  4. import net.minecraft.enchantment.EnumEnchantmentType;
  5. import net.minecraft.entity.Entity;
  6. import net.minecraft.entity.EntityLivingBase;
  7. import net.minecraft.entity.EnumCreatureAttribute;
  8. import net.minecraft.inventory.EntityEquipmentSlot;
  9. import net.minecraft.util.DamageSource;
  10.  
  11. public class SampleEnchantment extends Enchantment{
  12.     public SampleEnchantment(){
  13.         /*      貴重さ              , 付与できるアイテムの種別     , 付与できるアイテムの入るスロット*/
  14.         super(Rarity.COMMON, EnumEnchantmentType.ALL, EntityEquipmentSlot.values());
  15.         setName("sample");/*翻訳キーの指定*/
  16.     }
  17.  
  18.     /*
  19.     このエンチャントが付与されているものが攻撃された際のダメージ量。
  20.     */
  21.     @Override
  22.     public int calcModifierDamage(int level, DamageSource source){
  23.         return super.calcModifierDamage(level, source);
  24.     }
  25.  
  26.     /*
  27.     このエンチャントが付与されているものが攻撃された際に発動する。
  28.     */
  29.     @Override
  30.     public void onUserHurt(EntityLivingBase user, Entity attacker, int level){
  31.     }
  32.  
  33.     /*
  34.     このエンチャントが付与されているものが攻撃した際のダメージ量。
  35.     */
  36.     @Override
  37.     public float calcDamageByCreature(int level, EnumCreatureAttribute creatureType){
  38.         return super.calcDamageByCreature(level, creatureType);
  39.     }
  40.  
  41.     /*
  42.     このエンチャントが付与されているものが攻撃した際に発動する。
  43.     */
  44.     @Override
  45.     public void onEntityDamaged(EntityLivingBase user, Entity target, int level){
  46.         super.onEntityDamaged(user, target, level);
  47.     }
  48. }

[編集] 解説

以前とは違い、登録用イベントが発火されるようになった。
インスタンス保持はForgeの中の人の手法に沿ったものであるが、別に従来の方法でも問題ない。ここでは細かな解説をしない。
LangやModel用Jsonについては過去のチュートリアルを参照のこと。

チュートリアル
個人用ツール