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

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

やったこと事

取得したい情報は「記入済みの本」のタイトルです。
最初は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でキャストする事で本の内容を取得する事ができました。

最近人気の無料ゲーム!『ハンターヒーロー』

おすすめの記事

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です