提供: Minecraft Modding Wiki
移動先: 案内検索
(誤字の修正)
 
(2人の利用者による、間の7版が非表示)
1行目: 1行目:
 
この記事は未完成です<br />
 
この記事は未完成です<br />
 +
== 右クリックイベント ==
 +
この記事では、何かを右クリックした際、発生するイベントについて記載しています。<br />
 +
右クリックで効果を発揮する、特殊GUIを開くなどの前提として利用されます。<br />
 +
 
=== 対象がアイテムの場合 ===
 
=== 対象がアイテムの場合 ===
 
アイテムをクリックした場合には、onItemRightClickというメソッドが呼ばれます。<br />
 
アイテムをクリックした場合には、onItemRightClickというメソッドが呼ばれます。<br />
Itemクラスだと何も起こらないようになっているので、Itemクラスを継承したクラスを作り(extnds hoge)、そこにオーバーライドしたメソッドに処理を書き込みます。<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>
  
 
=== 対象がブロックの場合 ===
 
=== 対象がブロックの場合 ===
13行目: 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の場合 ===
不明<br />
+
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;
}