提供: Minecraft Modding Wiki
この記事は"Minecraft Forge Universal 12.16.0.xxx~"を前提MODとしています。 |
ItemStackに付与できるエンチャントの追加方法。
エンチャントの追加[編集]
ソースコード[編集]
- SampleMod.java
package com.example.ench; import net.minecraft.enchantment.Enchantment; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventHandler; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; import net.minecraftforge.fml.common.registry.GameRegistry; @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) public class SampleMod{ /** ModID文字列 */ public static final String MOD_ID = "samplemod"; /** MOD名称 */ public static final String MOD_NAME = "SampleMod"; /** MODのバージョン */ public static final String MOD_VERSION = "0.0.1"; /** 前に読み込まれるべき前提MODをバージョン込みで指定 */ public static final String MOD_DEPENDENCIES = "required-after:Forge@[1.9-12.16.0.1853,)"; /** 起動出来るMinecraft本体のバージョン。記法はMavenのVersion Range Specificationを検索すること。 */ public static final String MOD_ACCEPTED_MC_VERSIONS = "[1.9]"; /** 追加したいエンチャントのインスタンスを保持。 */ public static Enchantment sampleenchant; @EventHandler public void preInit(FMLPreInitializationEvent event){ //エンチャントの登録。登録文字列はMOD内で被らなければ何でも良い。 sampleenchant = new SampleEnchantment(); GameRegistry.register(sampleenchant,new ResourceLocation(MOD_ID,"sample")); } }
- SampleEnchantment.java
package com.example.ench; import net.minecraft.enchantment.Enchantment; import net.minecraft.enchantment.EnumEnchantmentType; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EnumCreatureAttribute; import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.util.DamageSource; public class SampleEnchantment extends Enchantment{ public SampleEnchantment(){ /* 貴重さ , 付与できるアイテムの種別 , 付与できるアイテムの入るスロット*/ super(Rarity.COMMON, EnumEnchantmentType.ALL, EntityEquipmentSlot.values()); setName("sample");/*内部名の指定*/ } /* このエンチャントが付与されているものが攻撃された際のダメージ量。 */ @Override public int calcModifierDamage(int level, DamageSource source){ return super.calcModifierDamage(level, source); } /* このエンチャントが付与されているものが攻撃された際に発動する。 */ @Override public void onUserHurt(EntityLivingBase user, Entity attacker, int level){ } /* このエンチャントが付与されているものが攻撃した際のダメージ量。 */ @Override public float calcDamageByCreature(int level, EnumCreatureAttribute creatureType){ return super.calcDamageByCreature(level, creatureType); } /* このエンチャントが付与されているものが攻撃した際に発動する。 */ @Override public void onEntityDamaged(EntityLivingBase user, Entity target, int level){ super.onEntityDamaged(user, target, level); } }