【Bukkit】Github にてほぼすべてのプラグインを公開します

Github https://github.com/kemasama

にてほぼすべての今まで作ってきたプラグインを順次一般公開します。

著作権について

2次配布禁止

コード改変はインターネット公開(Githubへ)

著作権は僕にあります(kema)

以上が守れれば好きに使ってくれて構いません。

また公開されているプラグインの一部は自鯖で使用していたものもあり、専用にカスタマイズされているものもあります。

そこは臨機応変に使用するのであれば変えてください。

 

現在公開中のプラグイン

問題があれば消すかもしれません。

また開発時期が2年ほど前のものもあり、コードが汚いかもしれません。

ご容赦ください。

※コードの綺麗さで最近かどうかわかる?

https://github.com/kemasama/CommonEffect

https://github.com/kemasama/FarmHunt

https://github.com/kemasama/FarmHunt2

https://github.com/kemasama/ThePit

https://github.com/kemasama/TeamDeathMatch

https://github.com/kemasama/WatchCat

https://github.com/kemasama/AntiCheat

https://github.com/kemasama/Hardcore

https://github.com/kemasama/Sumo

 

【Bukkit】#1 環境構築

Bukkit プラグインを作り始めるために必要な開発環境の構築方法を解説します!

※本記事はWindowsをお使いのこれからBukkitプラグインを作成した人を対象としています!

 

ダウンロード

はじめにEclipseと呼ばれる統合開発環境(IDE)をダウンロードします!

https://mergedoc.osdn.jp/

上のリンクから日本語されているEclipseをダウンロードすることができます!

クリックする場所は下の画像を参考に進めてください!

 

ダウンロードが終わったらファイルを解答します。

ファイルサイズが大きので時間がかかる可能性があります。

また、使っている解答ソフトによっては正常に解凍できないかもしれません。

 

次にBukkit/Spigot をダウンロードします。

Bukkit(Spigot) 1.14.4(使いたいバージョン) download

等で調べればダウンロードできますが、推奨されている方法ではないので自己責任でお願いします。

 

起動チェック

eclipse フォルダにある eclipse.exe を起動します。

もしも、JDKが必要になった場合は JDK8 と検索し、OracleJDKをインストールするか、

https://qiita.com/ryo-sato/items/87d05021fcc0519e8828

を参考にOpenJDKを使用してください。

使い分ける理由なのですが、ずばりライセンスの問題です。

個人での開発であれば全く問題ないのでOracleJDKを使ってください。

 

起動

起動できたら左上にあるファイルをクリックし、新規 > Javaプロジェクト 

の順にクリックしていきます。

プロジェクト名はわかりやすい名前で 英数字で入力してください。

日本語はコメント以外では使用しないほうがいいです!

 

プロジェクトの作成が完了したら、パッケージエクスプローラにあるプロジェクトを右クリックし、プロパティをクリックして表示します。

Java のビルドパス を選択し、ライブラリーに切り替えます。

外部JARの追加をクリックし、先程用意したBukkit(Spigot)を選択し、適用して閉じます。

これで基本的な環境構築が完了しました。

 

【Bukkit/Spigot】PlayerDeathEvent について

あるゲームを開発していて、この問題点に当たったのですが、

PlayerDeathEvent が発生した時点ではプレイヤーは死んでいません。

※正しくは違うのかもしれません。

PlayerDeathEvent が発生した後に死亡が確定しているように思います。

つまり、プレイヤーが死んだことをキーとするものを制作する場合、タイミングをずらして実行させる必要があります。

この問題のもっともわかりやすい例として、

Player#spigot().respawn

があります。

これを

@EventHandler
public void onDeath(PlayerDeathEvent e){
e.getEntity().spigot().respawn();
}

としてもうまくいきません。

正しくは

@EventHandler
public void onDeath(PlayerDeathEvent e){
new BukkitRunnable() {
e.getEntity().spigot().respawn();
}.runTaskLater(Plugin, 5L); // 20 で 1 秒
}

のようにしなければうまくいきません。