FirstSpring (トーク | 投稿記録) 細 (誤字の修正) |
|||
(2人の利用者による、間の5版が非表示) | |||
6行目: | 6行目: | ||
=== 対象がアイテムの場合 === | === 対象がアイテムの場合 === | ||
アイテムをクリックした場合には、onItemRightClickというメソッドが呼ばれます。<br /> | アイテムをクリックした場合には、onItemRightClickというメソッドが呼ばれます。<br /> | ||
− | + | Itemクラスだと何も起こらないようになっているので、Itemクラスを継承したクラスを作り(extends Item)、そこにオーバーライドしたメソッドに処理を書き込みます。<br /> | |
引数はItemStack, World, EntityPlayer の3つです。<br /> | 引数はItemStack, World, EntityPlayer の3つです。<br /> | ||
返り値はItemStackです。この時、返すItemStackを変化(使用によるアイテムの消費など)させることでアイテムに動きを起こすことができます。<br /> | 返り値はItemStackです。この時、返すItemStackを変化(使用によるアイテムの消費など)させることでアイテムに動きを起こすことができます。<br /> | ||
+ | |||
+ | 記述例: | ||
+ | <source lang="java"> | ||
+ | @Override | ||
+ | public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityPlayer) { | ||
+ | entityPlayer.dropPlayerItem(new ItemStack(Block.cobblestone, 8)); | ||
+ | return itemstack; | ||
+ | } | ||
+ | </source> | ||
=== 対象がブロックの場合 === | === 対象がブロックの場合 === | ||
17行目: | 26行目: | ||
int数値はそれぞれがブロックの座標になります。あること(TileEntityの読み出し等。未作成記事。)<br /> | int数値はそれぞれがブロックの座標になります。あること(TileEntityの読み出し等。未作成記事。)<br /> | ||
返り値は boolean(true/false)が返されます。基本true返して問題ない(はず)です。<br /> | 返り値は boolean(true/false)が返されます。基本true返して問題ない(はず)です。<br /> | ||
+ | |||
+ | 記述例: | ||
+ | <source lang="java"> | ||
+ | @Override | ||
+ | public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer) { | ||
+ | int l = world.getBlockMetadata(i, j, k) + 1; | ||
+ | world.setBlockMetadataWithNotify(i, j, k, l & 0xf); | ||
+ | return true; | ||
+ | } | ||
+ | </source> | ||
=== 対象がEntityの場合 === | === 対象がEntityの場合 === | ||
− | + | Entityの場合interactが呼ばれます。<br /> | |
+ | 例によってEntityクラスでは何も起こらないので、メソッドをオーバーライドして処理を書き込みます。<br /> | ||
+ | 引数は、EntityPlayerのみです。<br /> | ||
+ | 返り値はbooleanです。基本的にtrueを返せばいいはずです。<br /> | ||
+ | |||
+ | 記述例: | ||
+ | <source lang="java"> | ||
+ | @Override | ||
+ | public boolean interact(EntityPlayer entityplayer){ | ||
+ | if(!this.worldObj.isRemote) | ||
+ | entityplayer.addChatMessage("This entity life is " + this.getHealth()); | ||
+ | return true; | ||
+ | } | ||
+ | </source> |
2012年12月9日 (日) 13:37時点における最新版
この記事は未完成です
右クリックイベント[編集]
この記事では、何かを右クリックした際、発生するイベントについて記載しています。
右クリックで効果を発揮する、特殊GUIを開くなどの前提として利用されます。
対象がアイテムの場合[編集]
アイテムをクリックした場合には、onItemRightClickというメソッドが呼ばれます。
Itemクラスだと何も起こらないようになっているので、Itemクラスを継承したクラスを作り(extends Item)、そこにオーバーライドしたメソッドに処理を書き込みます。
引数はItemStack, World, EntityPlayer の3つです。
返り値はItemStackです。この時、返すItemStackを変化(使用によるアイテムの消費など)させることでアイテムに動きを起こすことができます。
記述例:
@Override public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityPlayer) { entityPlayer.dropPlayerItem(new ItemStack(Block.cobblestone, 8)); return itemstack; }
対象がブロックの場合[編集]
ブロックの場合は、blockActivatedが呼ばれます。
javadocによると左クリックでも動作すると書いてありますが、この記事の記述者(日時12/6/13)は確認していません。
同じくデフォルトでは何も起こらない仕様です。オーバーライドを利用して記述しましょう。
引数はWorld,int x,int y,int z,EntityPlayer の5つが呼び出されます。
int数値はそれぞれがブロックの座標になります。あること(TileEntityの読み出し等。未作成記事。)
返り値は boolean(true/false)が返されます。基本true返して問題ない(はず)です。
記述例:
@Override public boolean blockActivated(World world, int i, int j, int k, EntityPlayer entityplayer) { int l = world.getBlockMetadata(i, j, k) + 1; world.setBlockMetadataWithNotify(i, j, k, l & 0xf); return true; }
対象がEntityの場合[編集]
Entityの場合interactが呼ばれます。
例によってEntityクラスでは何も起こらないので、メソッドをオーバーライドして処理を書き込みます。
引数は、EntityPlayerのみです。
返り値はbooleanです。基本的にtrueを返せばいいはずです。
記述例:
@Override public boolean interact(EntityPlayer entityplayer){ if(!this.worldObj.isRemote) entityplayer.addChatMessage("This entity life is " + this.getHealth()); return true; }