Submit Search
Upload
Spigotで看板のクリックを取得するには
•
0 likes
•
368 views
Z
ZOIdayo
Follow
Spigotで看板のクリックを取得する方法をまとめました。 Spigot1.16.5で動作確認済です。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 21
Download now
Download to read offline
Recommended
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Scanning with nmap
Scanning with nmap
commiebstrd
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Adriano Teixeira de Souza
LockFree Algorithm
LockFree Algorithm
Merry Merry
CTFとは
CTFとは
Hiromu Yakura
パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
稔 小林
Network miner 使ってみた
Network miner 使ってみた
彰 村地
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
Hiromu Yakura
Recommended
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
Scanning with nmap
Scanning with nmap
commiebstrd
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Adriano Teixeira de Souza
LockFree Algorithm
LockFree Algorithm
Merry Merry
CTFとは
CTFとは
Hiromu Yakura
パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
稔 小林
Network miner 使ってみた
Network miner 使ってみた
彰 村地
CTFはとんでもないものを 盗んでいきました。私の時間です…
CTFはとんでもないものを 盗んでいきました。私の時間です…
Hiromu Yakura
Path oram
Path oram
Freeman Zhang
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
Hirotaka Kawata
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
The Segment Routing Architecture (IEEE Globecom 2015)
The Segment Routing Architecture (IEEE Globecom 2015)
nagendranainar
Modern Kernel Pool Exploitation: Attacks and Techniques
Modern Kernel Pool Exploitation: Attacks and Techniques
Michael Scovetta
Linux Performance Analysis and Tools
Linux Performance Analysis and Tools
Brendan Gregg
Ansible AWXを導入してみた
Ansible AWXを導入してみた
sugoto
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
mganeko
Jetson agx xavier and nvdla introduction and usage
Jetson agx xavier and nvdla introduction and usage
jemin lee
Java Flight Recorder Behind the Scenes
Java Flight Recorder Behind the Scenes
Staffan Larsen
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
Kuniyasu Suzaki
[若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures
Aj MaChInE
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
W4 profinet frame analysis, peter thomas
W4 profinet frame analysis, peter thomas
PROFIBUS and PROFINET InternationaI - PI UK
Introduction to Functional Programming with Scala
Introduction to Functional Programming with Scala
pramode_ce
MAP 実装してみた
MAP 実装してみた
Masakazu Asama
Unity5.3をさわってみた
Unity5.3をさわってみた
Keizo Nagamine
Unityネイティブプラグインの勧め
Unityネイティブプラグインの勧め
KLab Inc. / Tech
More Related Content
What's hot
Path oram
Path oram
Freeman Zhang
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
kazkiti
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
Hirotaka Kawata
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコシステムズ合同会社
The Segment Routing Architecture (IEEE Globecom 2015)
The Segment Routing Architecture (IEEE Globecom 2015)
nagendranainar
Modern Kernel Pool Exploitation: Attacks and Techniques
Modern Kernel Pool Exploitation: Attacks and Techniques
Michael Scovetta
Linux Performance Analysis and Tools
Linux Performance Analysis and Tools
Brendan Gregg
Ansible AWXを導入してみた
Ansible AWXを導入してみた
sugoto
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
mganeko
Jetson agx xavier and nvdla introduction and usage
Jetson agx xavier and nvdla introduction and usage
jemin lee
Java Flight Recorder Behind the Scenes
Java Flight Recorder Behind the Scenes
Staffan Larsen
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
Kuniyasu Suzaki
[若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures
Aj MaChInE
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
Yoshiaki Shibutani
W4 profinet frame analysis, peter thomas
W4 profinet frame analysis, peter thomas
PROFIBUS and PROFINET InternationaI - PI UK
Introduction to Functional Programming with Scala
Introduction to Functional Programming with Scala
pramode_ce
MAP 実装してみた
MAP 実装してみた
Masakazu Asama
What's hot
(20)
Path oram
Path oram
初心者向けCTFのWeb分野の強化法
初心者向けCTFのWeb分野の強化法
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
バイナリより低レイヤな話 (プロセッサの心を読み解く) - カーネル/VM探検隊@北陸1
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
The Segment Routing Architecture (IEEE Globecom 2015)
The Segment Routing Architecture (IEEE Globecom 2015)
Modern Kernel Pool Exploitation: Attacks and Techniques
Modern Kernel Pool Exploitation: Attacks and Techniques
Linux Performance Analysis and Tools
Linux Performance Analysis and Tools
Ansible AWXを導入してみた
Ansible AWXを導入してみた
WebRTC SFU mediasoup sample
WebRTC SFU mediasoup sample
Jetson agx xavier and nvdla introduction and usage
Jetson agx xavier and nvdla introduction and usage
Java Flight Recorder Behind the Scenes
Java Flight Recorder Behind the Scenes
Constexpr 中3女子テクニック
Constexpr 中3女子テクニック
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
仮想化技術によるマルウェア対策とその問題点
仮想化技術によるマルウェア対策とその問題点
[若渴]Study on Side Channel Attacks and Countermeasures
[若渴]Study on Side Channel Attacks and Countermeasures
Pythonが動く仕組み(の概要)
Pythonが動く仕組み(の概要)
W4 profinet frame analysis, peter thomas
W4 profinet frame analysis, peter thomas
Introduction to Functional Programming with Scala
Introduction to Functional Programming with Scala
MAP 実装してみた
MAP 実装してみた
Similar to Spigotで看板のクリックを取得するには
Unity5.3をさわってみた
Unity5.3をさわってみた
Keizo Nagamine
Unityネイティブプラグインの勧め
Unityネイティブプラグインの勧め
KLab Inc. / Tech
Inside CyberAgent's Game Development
Inside CyberAgent's Game Development
Suguru Shirai
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
Koji Morikawa
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
Unity Technologies Japan K.K.
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
まべ☆てっく運営
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション
KLab Inc. / Tech
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
UnityTechnologiesJapan002
運営型モバイルゲームの運用について
運営型モバイルゲームの運用について
KLab Inc. / Tech
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
真治 米田
Similar to Spigotで看板のクリックを取得するには
(12)
Unity5.3をさわってみた
Unity5.3をさわってみた
Unityネイティブプラグインの勧め
Unityネイティブプラグインの勧め
Inside CyberAgent's Game Development
Inside CyberAgent's Game Development
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
2D格闘ゲームにおけるユーザビリティとゲームデザインについて
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
見よう見まねでやってみる2D流体シミュレーション
見よう見まねでやってみる2D流体シミュレーション
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
【Unite Tokyo 2019】Unity + PlayFab ではじめる新しいゲーム運用 ~LiveOpsの始め方~
運営型モバイルゲームの運用について
運営型モバイルゲームの運用について
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
More from ZOIdayo
プログラミング講座 #6 競プロのテクニック(初級)
プログラミング講座 #6 競プロのテクニック(初級)
ZOIdayo
プログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみよう
ZOIdayo
プログラミング講座 #4 ターミナルを使いこなす
プログラミング講座 #4 ターミナルを使いこなす
ZOIdayo
プログラミング講座 #3 コードを書く
プログラミング講座 #3 コードを書く
ZOIdayo
プログラミング講座 #2 複雑なデータの扱い
プログラミング講座 #2 複雑なデータの扱い
ZOIdayo
プログラミング講座 #1 基本的なプログラム
プログラミング講座 #1 基本的なプログラム
ZOIdayo
More from ZOIdayo
(6)
プログラミング講座 #6 競プロのテクニック(初級)
プログラミング講座 #6 競プロのテクニック(初級)
プログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみよう
プログラミング講座 #4 ターミナルを使いこなす
プログラミング講座 #4 ターミナルを使いこなす
プログラミング講座 #3 コードを書く
プログラミング講座 #3 コードを書く
プログラミング講座 #2 複雑なデータの扱い
プログラミング講座 #2 複雑なデータの扱い
プログラミング講座 #1 基本的なプログラム
プログラミング講座 #1 基本的なプログラム
Spigotで看板のクリックを取得するには
1.
看板のクリックを取得するには ZOI 2021/08/01
2.
目次 ● 自己紹介 ● 実現したいこと ●
処理を実行するのに必要なこと ● プレイヤーのアクションを取得する方法・それぞれの特徴 ● 今回の目的を再確認してみる ● 実際に使われている例 ● 実装 ● 謝辞
3.
自己紹介 ZOI (高一) Spigot歴: 1年ほど 過去作品 BlockGuard(ワールド保護プラグイン)
4.
実現したいこと ミニゲームのプラグインを作った時、プレイヤーを参加させるためにコマンドを実行 させる必要があった コマンドの補完機能はあるが、入力時のミスが起こりやすい 『ミスが発生しない参加処理』を実現したい
5.
処理を実行するのに必要なこと クリック、移動、コマンド、インベントリ操作など、プレイヤーのアクションをプラグイン へ伝える必要がある 行動 プラグイン
6.
プレイヤーのアクションを取得する方法 ● コマンドの実行 ● コマンドブロック
(+レッドストーン信号) ● 本・チャットの文字のクリック ● アイテムのクリック ● 看板のクリック
7.
コマンドを使う方法の特徴 ● ワールドに依存しないので、どこでも実行できる ● 引数を使うことで、プログラムにデータを渡せる ●
同じ処理を繰り返すときの簡単さは他の方法に負ける ● 入力ミスが発生しやすい 利用用途 ● あまり実行しないような用途 ● プラグインに情報を渡す必要がある用途 プラグインの設定の変更など
8.
コマンドブロックを使う方法の特徴 ● コマンドブロックの機能によってリピート実行やチェーン実行が使える ● レッドストーン回路が使える ●
ワールドにブロックを設置する必要があるので手間やスペースがいる ● コマンドを実行したプレイヤーを特定するのが難しい 利用用途 ● レッドストーンと組み合わせたい用途 ● 実行者をあまり気にしなくて良い用途 ゲーム開始ボタンなど
9.
本やチャットの文字を使う利点 ● クリックさせる文字を使って動作を説明できる ● アイテムやチャットログとして携帯できる ●
先にアイテムを渡したりメッセージを送るといった準備が必要 利用用途 ● 実行するタイミングが限られている用途 (コマンドと組み合わせて)設定メニューなど
10.
アイテムのクリックを利用する利点 ● アイテムとして携帯できる ● 動作のイメージに合ったアイテムを使うことで、動作を理解しやすくなる ●
アイテムに名前や説明をつけることで、動作を説明できる ● インベントリを圧迫する 利用用途 ● 実行するタイミングがある程度限られている用途 ● 説明や見た目によって動作のイメージを伝えたい用途 ミニゲームでの特殊アイテムなど
11.
看板を使う利点 ● 看板のテキストによって動作をプレイヤーに説明できる ● 看板のテキストを書き換えることもできる ●
見えている文字列が全プレイヤーで同期されている ● 看板を設置する必要があるので手間やスペースがいる 利用用途 ● 全員で共通の状態を変更したい用途 ● ただ機能が拡張されたボタンとしての用途 ミニゲームでのステージ選択・ゲームへの参加など
12.
今回の目的を再確認してみる ● 持ち運べる必要はあまりない ● クリックしたプレイヤーを正確に取得したい ●
入力ミスを減らしたい ● 「ここを押して参加」のようなメッセージを表示したい 以上の理由から、看板を選んだ
13.
実際に使われている例 実際の利用例 ● Hypixel Server
ゲームへの参加 テレポーターの移動先を指定 ● ChelcyNetwork 容量無限のインベントリ 他の利用方法 ● 生活サーバーと資源サーバーの移動 ● ミニゲームのステージ選択
14.
実装 1. クリックイベントの取得 2. クリックされたのが看板かどうかの判断 3.
処理の実行
15.
1. クリックイベントの取得 (流れ) Spigotでは、 ●
registerEvents()によってイベントリスナーとして登録されている ● org.bukkit.event.Listener を継承している ● イベントハンドラ(@EventHandler)を設定している ● 適切な引数を受け取る という条件が満たされている関数が存在すれば、イベント発生時に実行される
16.
1. クリックイベントの取得 (実装例) Listener
を継承させたクラスを作り、その中にイベント用の関数を記述 public class EventManager implements Listener { @EventHandler public void onClick(PlayerInteractEvent event) { // この関数が呼び出される } } そのクラスをイベントリスナーに登録する // Main関数内に記述 @Override public void onEnable() { getServer().getPluginManager().registerEvents(new EventManager(), this); }
17.
2. クリックされたのが看板かどうかの判断 (流れ) このままでは、クリックイベント全てに対して処理される 求める条件 ●
ブロックをクリックした ● そのブロックが看板である
18.
2. クリックされたのが看板かどうかの判断 (実装) ブロックをクリックしていない場合や、看板以外をクリックした場合を除く //
onClick()内に記述 if (!event.hasBlock()) return; if (!(event.getClickedBlock().getState() instanceof Sign)) return; Sign signboard = (Sign) event.getClickedBlock().getState();
19.
3. 処理の実行 (流れ) 今、看板の情報とクリックイベントの情報を使うことができるので、 看板の利用目的に応じてコードを記述する
20.
3. 処理の実行 (実装) 今回は、看板の文字列をそのままプレイヤーに返してみる //
onClick()内に記述 Sign signboard = (Sign) event.getClickedBlock().getState(); for (String str : signboard.getLines()) { event.getPlayer().sendMessage(str); }
21.
謝辞 使用させていただいたツール ● SlidesCodeHighlighter :
https://romannurik.github.io/SlidesCodeHighlighter/ ● Font Awesome : https://fontawesome.com/ 参考にさせていただいたサイト ● Spigot API : https://hub.spigotmc.org/javadocs/bukkit/ ● SpigotのEvent一覧 : https://www.jias.jp/blog/?85
Download now