提供: Minecraft Modding Wiki
移動先: 案内検索
(PotionEffectを付与するアイテムを追加し、基礎的なPotionEffectについて述べたもの。)
 
(ページの白紙化)
 
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アップにより効果が違ってくる可能性もある。'''
 

2013年9月3日 (火) 18:50時点における最新版