今回は前回使っていたMCreatorというツールで作成したアイテムに、
エンチャントやポーション等の特殊効果を付ける方法について紹介します。
MCreator公式サイト様
まずはMCreatorを起動して『Create new element』を選択して、MODを作成します。
Name of the elementにてMODタイトル名とMODの種類を選択します。
今回は『モナド』という剣を作っていきます。
--参考情報--------------------------------------------------
ツール系のデフォルト情報
ツール系 | レベル | 耐久値 | 破壊速度 | 攻撃力 | エンチャント |
木 | 0 | 59 | 2.0F | 0 | 15 |
石 | 1 | 131 | 4.0F | 1 | 5 |
鉄 | 2 | 250 | 6.0F | 2 | 14 |
エメラルド | 3 | 1561 | 8.0F | 3 | 10 |
金 | 0 | 32 | 12.0F | 0 | 22 |
アイテムを持った状態で右クリックした場合の設定や、アイテムを作成した直後の動作を設定します。
今回は何も設定しません。
アイテムのレシピを設定します。
ここまでが通常のアイテムMOD作成手順です。
さらにこのモナドに特殊効果を付ける場合はコードを書きかえる必要があります。
以下の手順を踏むことでエンチャントやポーション、
NTBタグなどを付加することができます。
では今作ったばかりのアイテムを選択し『View source』を選択してください。
『View source』を選択すると以下のようなソースコードが表示されます。
武器にエンチャントをつけたい場合は
GameRegistry.addRecipe(stack, new Object[]{
の上に黄色い枠の一文を追加してください。
武器にポーション効果をつけたい場合は
return ret.keySet();
}
の下に水色枠の文を追加してください。
武器にNBTタグをつけたい場合は
下の画像のようにいくつかの赤い枠の文言を追加してください。
NBTタグ
◆インポート文
import net.minecraft.entity.ai.attributes.*;
◆クラス変数
public final static UUID MODIFIER_UUID = UUID.fromString("111093da-54f0-4c1b-9dbb-13434134a84c");※UUID自体は任意のものを入れてください
◆以下は剣の場合の設定です。
わからない場合はいじるのやめたほうがいいともいますよ。
NBTTagList list = new NBTTagList();ItemSword item = (ItemSword)stack.getItem();AttributeModifier attackModifier = new AttributeModifier(MODIFIER_UUID, "attackDamage", item.getDamageVsEntity() + 4, 0);list.appendTag(writeAttributeModifierToNBT(SharedMonsterAttributes.attackDamage, attackModifier));attackModifier = new AttributeModifier(MODIFIER_UUID, "movementSpeed", 0.1D, 0);list.appendTag(writeAttributeModifierToNBT(SharedMonsterAttributes.movementSpeed, attackModifier));NBTTagCompound stackTagCompound = new NBTTagCompound();stackTagCompound.setTag("AttributeModifiers", list);stack.setTagCompound(stackTagCompound);
◆NBTタグ追加用メソッド
private static NBTTagCompound writeAttributeModifierToNBT(IAttribute attribute, AttributeModifier modifier) { NBTTagCompound nbttagcompound = new NBTTagCompound(); nbttagcompound.setString("AttributeName", attribute.getAttributeUnlocalizedName()); nbttagcompound.setString("Name", modifier.getName()); nbttagcompound.setDouble("Amount", modifier.getAmount()); nbttagcompound.setInteger("Operation", modifier.getOperation()); nbttagcompound.setLong("UUIDMost", modifier.getID().getMostSignificantBits()); nbttagcompound.setLong("UUIDLeast", modifier.getID().getLeastSignificantBits()); return nbttagcompound;}
エンチャント
stack.addEnchantment(Enchantment.protection, 2);※Enchantment.protectionに任意の効果
2に適応したいレベルを入れてください。
持ってる時にポーションエフェクト
public void onUpdate(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) { if(isSelected){ ((EntityLivingBase)entityIn).addPotionEffect(new PotionEffect(9, 20*5, 0)); }}
※PotionEffecfの9に任意の効果
20*5に効果時間(20tickで1秒のため20をかけてます)
0に効果力
そして、コンパイル後にテスト実行した結果が以下の状態です。
作成したモナドには各種特殊効果が付与されているのがわかります。
--MOD情報--------------------------------------------------
- MOD名:
- モナド
- MODバージョン:
- 1.0.0
- 更新日:
- 2015/11/5
- 対応バージョン:
- Minecraft 1.8以上
- 必要MOD:
- Minecraft 1.8対応forge
- ダウンロード
- 変更履歴
- 1.0.0
- 公開
参考情報としてエンチャントやポーションの各種IDをのせておきます。
--参考情報--------------------------------------------------
エンチャント
防具エンチャント | 最大レベル | ID |
ダメージ軽減 | IV | Enchantment.protection |
火炎耐性 | IV | Enchantment.fireProtection |
落下耐性 | IV | Enchantment.featherFalling |
爆発耐性 | IV | Enchantment.blastProtection |
飛び道具耐性 | IV | Enchantment.projectileProtection |
水中呼吸 | III | Enchantment.respiration |
水中採掘 | I | Enchantment.aquaAffinity |
棘の鎧 | III | Enchantment.thorns |
水中移動 | III | Enchantment.depthStrider |
耐久力 | III | Enchantment.unbreaking |
武器エンチャント | 最大レベル | ID |
ダメージ増加 | V | Enchantment.sharpness |
アンデッド特効 | V | Enchantment.smite |
虫特効 | V | Enchantment.baneOfArthropods |
ノックバック | II | Enchantment.knockback |
火属性 | II | Enchantment.fireAspect |
ドロップ増加 | III | Enchantment.looting |
耐久力 | III | Enchantment.unbreaking |
ツールエンチャント | 最大レベル | ID |
効率強化 | V | Enchantment.efficiency |
シルクタッチ | I | Enchantment.silkTouch |
耐久力 | III | Enchantment.unbreaking |
幸運 | III | Enchantment.fortune |
弓エンチャント | 最大レベル | ID |
ダメージ増加 | V | Enchantment.power |
パンチ | II | Enchantment.punch |
フレイム | I | Enchantment.flame |
無限 | I | Enchantment.infinity |
釣り竿エンチャント | 最大レベル | ID |
宝釣り | III | Enchantment.luckOfTheSea |
入れ食い | III | Enchantment.lure |
ポーション
ポーション効果 | ID | ポーション効果 | ID |
移動速度上昇 | 1 | 水中呼吸 | 13 |
移動速度低下 | 2 | 透明化 | 14 |
採掘速度上昇 | 3 | 盲目 | 15 |
採掘速度低下 | 4 | 暗視 | 16 |
攻撃力上昇 | 5 | 空腹 | 17 |
即時回復 | 6 | 弱体化 | 18 |
ダメージ | 7 | 毒 | 19 |
跳躍力上昇 | 8 | ウィザー | 20 |
吐き気 | 9 | 体力増強 | 21 |
再生能力 | 10 | 衝撃吸収 | 22 |
耐性 | 11 | 満腹度回復 | 23 |
火炎耐性 | 12 |
例:吐き気は5秒程度効果時間がないと発動しません。
NBTタグ
NBTタグ | ID |
体力 | SharedMonsterAttributes.maxHealth |
探索範囲 | SharedMonsterAttributes.followRange |
ノックバック耐性 | SharedMonsterAttributes.knockbackResistance |
移動速度 | SharedMonsterAttributes.movementSpeed |
攻撃力 | SharedMonsterAttributes.attackDamage |
------------------------------------------------------------
質問指摘意見等はコメントでどうぞ
アイテムの耐久を無限にするにはどうすればいいのでしょうか
返信削除number of usesが耐久値なので0にすると無限になると思いますよ
削除Mcreator Wiki http://mcreator.wikia.com/wiki/The_MCreator_Wikia
あと無限の属性(NBTタグ)付けるという手法もあります
削除複数のポーション効果をつけるにはどうしたらいいのでしょうか
返信削除((EntityLivingBase)entityIn).addPotionEffect(new PotionEffect(9,20*5,0));
削除この行をコピペして効果だけを変更すると
複数ポーションの効果を付けることができますよ
出来れば追加するコードをコピペ用に貼っといてくれると助かります。
返信削除上記コメントを良く見てください
返信削除貼ってありますよ
貼ってないですよね?
削除主に写真で写ってる赤枠の部分とか
ポーションについては2016年3月24日 7:47のコメントを参照してください
削除赤枠は写真を見てください
右クリックを左クリックにすることはできないのでしょうか?
返信削除すみません。お聞きしたいことがあるのですが、水色枠の部分をreturn ret.keyset();}の下につけるとシンボルが見つかりませんと出てくるのですが、どうすればよいですかね?1.7.10用のMODを作成しています。
返信削除ある特定のアイテムで右クリックした場合にmobをアイテム化させるなんてことは可能ですか?
返信削除できますがここで説明できるほど簡単ではありません
削除まずはオリジナルMODを作ってスキルを磨いてください
すみません、自分で出来ました
返信削除