\ 期間限定キャンペーン /

  • マルチサーバーを自動構築できる
  • ポート開放・設定必要ない
  • 統合版(iOS, Android, Win10)完全対応

ConoHaVPSというレンタルサーバーに、
いま無料会員登録すると700円無料クーポンが貰えます。

ボタンを押すだけでマルチサーバーが建てられるので、
諦めた経験がある人でも大丈夫!

今だと期間限定キャンペーンとして無料で使えるので
このチャンスを見逃さないように↓

【Plugin開発】BookMetaで本の名前を取得したり設定する

プラグイン開発

book
本のアイテム名を取得したかったのですが色々とあったので記事に残しておきたいと思います。

\ 期間限定キャンペーン /

  • マルチサーバーを自動構築できる
  • ポート開放・設定必要ない
  • JE(PC, Java)版、統合版(Win10, スマホ)完全対応

ConoHaVPSというレンタルサーバーに、
いま無料会員登録すると700円無料クーポンが貰えます。

ボタンを押すだけでマルチサーバーが建てられるので、
諦めた経験がある人でも大丈夫!

今だと期間限定キャンペーンとして無料で使えるので
このチャンスを見逃さないように↓

やったこと事

取得したい情報は「記入済みの本」のタイトルです。
最初はItemStack#getName的なのがあるかと思っていたのですがどうやらない模様。

なので、ItemMetaとかに書いてるのかなと思い見てみるとgetDisplayName()がありました。

@EventHandler
public void check(PlayerInteractEvent e){
	Player player = e.getPlayer();
	String name = player.getItemInHand().getItemMeta().getDisplayName();
	
	player.sendMessage("DisplayName: " + name);
}

結果: null

結果はnull。どうやらItemMeta#getDisplayName()ではアイテムの名前を取得できないようです。事前にアイテムにsetDisplayName()で設定しておく必要があります。

他にもsetDisplayNameをしていないアイテムを鉄床で名前を付けた場合にもgetDisplayNameで名前を取得する事ができます。

本の名前を取得

@EventHandler
public void book(PlayerInteractEvent e){
	Player player = e.getPlayer();
	
	if(player.getItemInHand().getType() != Material.WRITTEN_BOOK){
		return;
	}
	
	BookMeta book = (BookMeta) player.getItemInHand().getItemMeta();
	
	player.sendMessage("Title: " + book.getTitle());
	player.sendMessage("page: " + book.getPageCount());
	player.sendMessage("Author: " + book.getAuthor());
}

getItemMetaをBookMetaでキャストする事で本の内容を取得する事ができました。

コメント

タイトルとURLをコピーしました