最新版 |
編集中の文章 |
1行目: |
1行目: |
− | この記事は未完成です<br />
| |
− | == 右クリックイベント ==
| |
− | この記事では、何かを右クリックした際、発生するイベントについて記載しています。<br />
| |
− | 右クリックで効果を発揮する、特殊GUIを開くなどの前提として利用されます。<br />
| |
| | | |
− | === 対象がアイテムの場合 === | + | == 注意:一部未完成記事。更新希望。 == |
− | アイテムをクリックした場合には、onItemRightClickというメソッドが呼ばれます。<br />
| |
− | Itemクラスだと何も起こらないようになっているので、Itemクラスを継承したクラスを作り(extends Item)、そこにオーバーライドしたメソッドに処理を書き込みます。<br />
| |
− | 引数はItemStack, World, EntityPlayer の3つです。<br />
| |
− | 返り値はItemStackです。この時、返すItemStackを変化(使用によるアイテムの消費など)させることでアイテムに動きを起こすことができます。<br />
| |
| | | |
− | 記述例:
| + | 対象がアイテムの場合 |
− | <source lang="java">
| + | アイテムをクリックした場合には、onItemRightClickというメソッドが呼ばれます。 |
− | @Override
| + | Itemクラスだと何も起こらないようになっているので、Itemクラスを継承したクラスを作り(extnds hoge)、そこにオーバーライドしたメソッドに処理を書き込みます。 |
− | public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityPlayer) {
| + | 引数はItemStack, World, EntityPlayer の3つです。 |
− | entityPlayer.dropPlayerItem(new ItemStack(Block.cobblestone, 8));
| + | 返り値はItemStackです。この時、返すItemStackを変化(使用によるアイテムの消費など)させることでアイテムに動きを起こすことができます。 |
− | return itemstack;
| |
− | }
| |
− | </source>
| |
| | | |
− | === 対象がブロックの場合 ===
| |
− | ブロックの場合は、blockActivatedが呼ばれます。<br />
| |
− | javadocによると左クリックでも動作すると書いてありますが、この記事の記述者(日時12/6/13)は確認していません。<br />
| |
− | 同じくデフォルトでは何も起こらない仕様です。オーバーライドを利用して記述しましょう。<br />
| |
− | 引数はWorld,int x,int y,int z,EntityPlayer の5つが呼び出されます。<br />
| |
− | int数値はそれぞれがブロックの座標になります。あること(TileEntityの読み出し等。未作成記事。)<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の場合 ===
| + | ブロックの場合は、blockActivatedが呼ばれます。 |
− | Entityの場合interactが呼ばれます。<br />
| + | javadocによると左クリックでも動作すると書いてありますが、この記事の記述者(日時12/6/13)は確認していません。 |
− | 例によってEntityクラスでは何も起こらないので、メソッドをオーバーライドして処理を書き込みます。<br />
| + | 同じくデフォルトでは何も起こらない仕様です。オーバーライドを利用して記述しましょう。 |
− | 引数は、EntityPlayerのみです。<br />
| + | 引数はWorld,int x,int y,int z,EntityPlayer の5つが呼び出されます。 |
− | 返り値はbooleanです。基本的にtrueを返せばいいはずです。<br />
| + | int数値はそれぞれがブロックの座標になります。あること(TileEntityの読み出し等。未作成記事。) |
| + | 返り値は boolean(true/false)が返されます。基本true返して問題ない(はず)です。 |
| | | |
− | 記述例:
| + | |
− | <source lang="java">
| + | 対象がEntityの場合 |
− | @Override
| + | |
− | public boolean interact(EntityPlayer entityplayer){
| + | 実戦したことがないので未筆記!!だれか追加お願いします! |
− | if(!this.worldObj.isRemote)
| + | |
− | entityplayer.addChatMessage("This entity life is " + this.getHealth());
| + | |
− | return true;
| + | この記事が誰かの役に立てば幸いです。 |
− | }
| |
− | </source>
| |