|
|
1行目: |
1行目: |
− | {{前提MOD|reqmod="Minecraft Forge Universal 9.10.0.xxx~"}}
| |
| | | |
− | ==PotionEffectのチュートリアル==
| |
− | <p>PotionEffectを付与するアイテムを追加し、基礎的なPotionEffectについて述べる。<br>
| |
− | 尚、Itemの追加などの解説などは[http://minecraftjp.info/modding/index.php/1.6%E3%81%AE%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E8%BF%BD%E5%8A%A0 『アイテムの追加』]を参照。</p>
| |
− |
| |
− | ===ソースコード===
| |
− | *Sample_Potion.java
| |
− | <source lang = "java">
| |
− | package Sample.Sample_Potion.mods;
| |
− |
| |
− | import net.minecraft.item.Item;
| |
− | import cpw.mods.fml.common.Mod;
| |
− | import cpw.mods.fml.common.Mod.EventHandler;
| |
− | import cpw.mods.fml.common.event.FMLInitializationEvent;
| |
− | import cpw.mods.fml.common.event.FMLPreInitializationEvent;
| |
− | import cpw.mods.fml.common.registry.GameRegistry;
| |
− | import cpw.mods.fml.common.registry.LanguageRegistry;
| |
− |
| |
− | @Mod(modid="Sample_Potion", name="Sample_Potion", version="1.0")
| |
− | public class Sample_Potion
| |
− | {
| |
− | public static Item Item_PotionItem;
| |
− |
| |
− | public static int ItemID_PotionItem;
| |
− |
| |
− | @EventHandler
| |
− | public void preInit(FMLPreInitializationEvent event)
| |
− | {
| |
− | Item_PotionItem = new ItemSample(ItemID_PotionItem);
| |
− | GameRegistry.registerItem(Item_PotionItem, "potionitem");
| |
− | }
| |
− |
| |
− | @EventHandler
| |
− | public void init(FMLInitializationEvent event)
| |
− | {
| |
− | LanguageRegistry.addName(Item_PotionItem, "Potion Item");
| |
− | LanguageRegistry.instance().addNameForObject(Item_PotionItem, "ja_JP", "ポーション アイテム");
| |
− | }
| |
− |
| |
− |
| |
− | }
| |
− | </source>
| |
− |
| |
− | *ItemSample.java
| |
− | <source lang = "java">
| |
− | package Sample.Sample_Potion.mods;
| |
− |
| |
− | import net.minecraft.creativetab.CreativeTabs;
| |
− | import net.minecraft.entity.player.EntityPlayer;
| |
− | import net.minecraft.item.Item;
| |
− | import net.minecraft.item.ItemStack;
| |
− | import net.minecraft.world.World;
| |
− | import net.minecraft.potion.Potion;
| |
− | import net.minecraft.potion.PotionEffect;
| |
− |
| |
− | public class ItemSample extends Item
| |
− | {
| |
− | public ItemSample(int par1)
| |
− | {
| |
− | super(par1);
| |
− |
| |
− | //クリエイティブのタブ
| |
− | this.setCreativeTab(CreativeTabs.tabMaterials);
| |
− |
| |
− | //システム名の登録
| |
− | this.setUnlocalizedName("PotionItem");
| |
− |
| |
− | //テクスチャの指定
| |
− | this.func_111206_d("sample:PotionItem");
| |
− |
| |
− | //スタックできる量
| |
− | this.setMaxStackSize(1);
| |
− |
| |
− | //アイテムの最大ダメージ値
| |
− | this.setMaxDamage(1200);
| |
− | }
| |
− |
| |
− | //アイテムを右クリック時に呼ばれる
| |
− | @Override
| |
− | public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
| |
− | {
| |
− | //PotionのID
| |
− | int potionID = Potion.moveSpeed.id;
| |
− |
| |
− | //Potionの効果時間(【20tick ≒ 1秒】なので*20)
| |
− | int duration = 10 * 20;
| |
− |
| |
− | //PotionのLv
| |
− | int amplifier = 1;
| |
− |
| |
− | //PotionEffectの設定
| |
− | PotionEffect Effect = new PotionEffect(potionID, duration, amplifier);
| |
− |
| |
− | //PotionEffect(Effect)がEntityPlayerに付与されているかの判定
| |
− | boolean isMoveSpeed = par3EntityPlayer.isPotionActive(Effect.getPotionID());
| |
− |
| |
− | //PotionEffect(Effect)がEntityPlayerに付与されていない場合
| |
− | if( !isMoveSpeed )
| |
− | {
| |
− | //Itemを振る動作
| |
− | par3EntityPlayer.swingItem();
| |
− |
| |
− | //ダメージ値を【1】増やす
| |
− | par1ItemStack.damageItem(1, par3EntityPlayer);
| |
− |
| |
− | //PotionEffect(Effect)をEntityPlayerに付与
| |
− | par3EntityPlayer.addPotionEffect(Effect);
| |
− | }
| |
− |
| |
− | return par1ItemStack;
| |
− | }
| |
− | }
| |
− | </source>
| |
− | ==解説==
| |
− | ===ItemSample.java===
| |
− | <source lang = "java">
| |
− | //PotionのID
| |
− | int potionID = Potion.moveSpeed.id;
| |
− |
| |
− | //Potionの効果時間
| |
− | int duration = 10 * 20;
| |
− |
| |
− | //Potionの強さ
| |
− | int amplifier = 0;
| |
− |
| |
− | //PotionEffectの設定
| |
− | PotionEffect Effect = new PotionEffect(potionID, duration, amplifier);
| |
− | </source>
| |
− | '''potionID'''は'''『PotionのID』'''である。<br>
| |
− | この値により、PotionEffectのIDが決まる。
| |
− | 現在(2013/9/3)では'''1~23'''にIDが振り当てられおり、[http://www26.atwiki.jp/minecraft/pages/395.html 醸造]によって得られない効果も多数ある。<br>
| |
− | 一部の効果はバッドステータスとしても利用されている。(例:ゾンビ肉を食べた際の空腹、ウィザーの攻撃によるウィザー状態)<br>
| |
− |
| |
− | '''duration'''は'''『Potionの効果時間』'''である。<br>
| |
− | この値により、PotionEffectの強効果時間決まる。<br>
| |
− | 『20tick ≒ 1秒』である為、ここでは20を乗算している<br>
| |
− |
| |
− | '''amplifier'''は'''『Potionの強さ』'''である。<br>
| |
− | この値により、PotionEffectの強さが決まる。<br>
| |
− | PotionEffectが付与されている際に画面に表示されるLvのことでもある。<br>
| |
− | ここで注意すべきは、'''0から振り当てられているということである。(例:0と設定した場合にはLv1となる)'''<br>
| |
− |
| |
− | <source lang = "java">
| |
− | //PotionEffect(Effect)をEntityPlayerに付与
| |
− | par3EntityPlayer.addPotionEffect(Effect);
| |
− | </source>
| |
− | 上記の要素を組み合わせたPotionEffectは、'''addPotionEffect()'''を用いて付与される。<br>
| |
− | 尚、ここではEntityPlayerであるが、'''基本的にPotionEffectは『生物』であるならば付与可能である。'''<br>
| |
− | '''(アンデットには発揮されない、プレーヤーにのみにしか発揮されない効果などもある)'''<br>
| |
− |
| |
− | ==まとめ==
| |
− | このようにPotionEffectは簡単に付与できる上に応用も利くので、Mod製作においては非常に便利な要素である。<br>
| |
− | '''しかし、未だ未実装段階の効果なども存在しているのでverアップにより効果が違ってくる可能性もある。'''
| |