石橋を叩いて壊すページ

頭蓋骨ブロックを自分の顔にしてみた

前の記事でご質問いただいた件を調べてみた。

【misterT】検証ありがとうございます!あなたが居なければ私はプラグインを作れませんでした。
あとちょっと別の話になりますがアイテムやブロックのNBTをいじることはできないのでしょうか?
例えば頭のSkullOwnerを指定してユーザーの頭を出す等

マインクラフトに「頭蓋骨」というブロックがあるのは既にご存知の方も多いと思うが、
実はこの頭蓋骨にはプレイヤーの顔を映すことができる。
この辺の話はMinecraft Wikiの頭蓋骨のページを読むと書いてある。

で、頭蓋骨をプレイヤーにするプラグインは結論から言うと案外簡単にできた。
というか、1ヶ月前にも同じことを一度調べて断念したはずなのに再度調べたらえらくスムーズに見つかった。
やっぱり考えが煮詰まってうまくいかないときはやり直すに限るよね。
ソースは以下のとおり。

package jp.jias.bukkit;

import org.bukkit.Material;
import org.bukkit.block.Skull;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class TestPlugin extends JavaPlugin implements Listener {

	/**
	 * プラグインが開始するとき呼び出される
	 */
	public void onEnable() {

		// イベントリスナーの登録
		getServer().getPluginManager().registerEvents(this, this);

	}
	
	/**
	 * クリックするとき呼び出される
	 * @param e 
	 */
	@EventHandler
	public void onPlayerInteractEvent(PlayerInteractEvent e) 
	{
		if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK) && e.getClickedBlock().getType().equals(Material.SKULL))
		{
			Skull skull=(Skull)e.getClickedBlock().getState();
			skull.setOwner(e.getPlayer().getName());
			skull.update();
		}
	}
}

ゲーム内でクリックするとPlayerInteractEventイベントが発生する。
e.getAction()とe.getClickedBlock()で、頭蓋骨ブロックを右クリックしたのかを調べる。
その後、クリックした頭蓋骨ブロックのBlockStateを取得し、setOwner(String)で殴った人の名前を設定し、
最後にupdate()で情報を更新して終了。



何でもいいので頭蓋骨を設置し右クリックすると顔が変わる。

例によってまたBukkit Japan Wikiにページを追加

この記事を評価

この記事にコメント

  1. ...

【この記事にコメント】
お名前:
コメント:

Menu