チェストを開けたときのイベントについて

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.319231)

チェストを開けたときのイベントについて

投稿記事by ryotaa » 2018年8月16日(木) 08:32

プラグイン作成初心者です。プログラミングもゲームエンジンで軽くゲームを作る程度です。
プラグインで特定のチェスト(Block)を作り、それを開けたときにその人が誰かとなんのアイテムを取ったかを取得したいのですが、チェストは最初にhogeという変数で用意したチェストをブロックとして配置することでコマンドからそのチェストにアクセスできるようにはしたのですが(ホントはチェスト右クリックなどでそれ用のチェストを作りたかったのですができなかったので妥協;;)、それ以降のチェストのオープンイベントや取ったアイテムの取得が
https://hub.spigotmc.org/javadocs/spigo ... mmary.html
このサイト見ていいイベント探しつつ試していっても(そもそも使い方を間違えてるきはするが)全くできません。
全部他人だと作った感がないのでヒントかこーゆー仕組みにしたほうが良いんじゃないとか、プログラムを理解したいので簡単めなコードで書かれた物を見せてほしいです。
↑は全部面倒くさい感じなのでこれで動くはずだから一個づつ調べろでも大丈夫です。調べます。
ryotaa
ID:91d7db23
 

  • (PostNo.319528)

Re: チェストを開けたときのイベントについて

投稿記事by amata1219 » 2018年8月24日(金) 17:24

ryotaa さんが書きました:プラグイン作成初心者です。プログラミングもゲームエンジンで軽くゲームを作る程度です。
プラグインで特定のチェスト(Block)を作り、それを開けたときにその人が誰かとなんのアイテムを取ったかを取得したいのですが、チェストは最初にhogeという変数で用意したチェストをブロックとして配置することでコマンドからそのチェストにアクセスできるようにはしたのですが(ホントはチェスト右クリックなどでそれ用のチェストを作りたかったのですができなかったので妥協;;)、それ以降のチェストのオープンイベントや取ったアイテムの取得が
https://hub.spigotmc.org/javadocs/spigo ... mmary.html
このサイト見ていいイベント探しつつ試していっても(そもそも使い方を間違えてるきはするが)全くできません。
全部他人だと作った感がないのでヒントかこーゆー仕組みにしたほうが良いんじゃないとか、プログラムを理解したいので簡単めなコードで書かれた物を見せてほしいです。
↑は全部面倒くさい感じなのでこれで動くはずだから一個づつ調べろでも大丈夫です。調べます。


ryotaaさん、こんにちは。
インベントリ(チェストも含む)を開いた際に発生するイベントは、org.bukkit.event.inventory.InventoryOpenEventになります。

サンプル
コード: 全て選択
@EventHandler
public void onOpen(InventoryOpenEvent e){
if(!(e.getPlayer() instanceof Player))return;
//HumanEntityで返ってくるが念の為
Player p = (Player) e.getPlayer();

System.out.println(p.getName());
//インベントリを開いたプレイヤー名前をコンソールに表示してみる

if(e.getInventory().getType() == InventoryType.CHEST){
//インベントリタイプがチェストの場合
}
}


また、インベントリに対して何か操作を行った場合に発生するイベントは、org.bukkit.event.inventory.InventoryClickEventとなっています。

サンプル
コード: 全て選択
@EventHandler
public void onClick(InventoryClickEvent e){
if(!(e.getWhoClicked() instanceof Player))return;
Player p = (Player) e.getWhoClicked();

System.out.println(p.getUniqueID());
//インベントリをクリックしたプレイヤーのUUIDをコンソールに表示してみる

if(e.getInventory() != null){
//インベントリ外をクリックした場合もイベントは発生するのでnullチェック
if(e.getInventory().getType() == InventoryType.CHEST){
//インベントリタイプがチェストの場合
}
}
}
アバター
amata1219
ID:41ade57a
石掘り
 
記事: 90
登録日時: 2016年11月18日(金) 16:46
お住まい: Enabling World

  • (PostNo.319704)

Re: チェストを開けたときのイベントについて

投稿記事by ryotaa » 2018年8月29日(水) 05:34

返信遅れました。
ありがとうございます!やってみます。
ryotaa
ID:91d7db23
 


Return to 質問:開発・制作関連

x