石橋を叩いて壊すブログ

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

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

【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にページを追加

この記事を評価

60 56

コメント

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

295,349

記事カテゴリー

最近の記事

  1. FF14を翻訳したら国によって結構特色が違った[12/11]
  2. ゼロから始めるFactorioの回路構築(実践例編)[7/24]
  3. ゼロから始めるFactorioの回路構築(条件回路・論理演算編)[7/24]
  4. ゼロから始めるFactorioの回路構築(定数回路・算術回路編)[7/24]
  5. ゼロから始めるFactorioの回路構築(入力・出力・混合編)[7/24]

RSS1.0 RSS2.0

最近のコメント

  1. おー、お役に立てたようでなによりです。再起…[9/11]
  2. この記事が非常の役立ちました。おかげさまで…[9/9]
  3. 1.14.2のAPIで試しましたが、MapInitializeEv…[9/9]
  4. 天晴れ!押したらポーションのモヤモヤでまし…[5/26]
  5. 習うより慣れろって感じで。この記事は記事冒…[4/7]

記事を検索


管理人

石橋

2014年から
神奈川県秦野市市民