Spigot(Paper) 2020年度 プラグインの作り方 入門＃01（環境構築編） 

今回はMinecraftのSpigotMC（以下、Spigot)というカスタムサーバーを使ってオリジナルのプラグインを作りたいと思います。
具体的にオリジナルのプラグインを作成しながらプラグイン作りの全体像を理解する助けになればなと思っています。

できるだけ丁寧に解説したいのですが、どうしても前知識が必要になってしまう部分もあると思います・・・。
他の入門サイトでJavaの環境構築を終えつつJavaの基本の文法、if文やfor文等の制御構文，クラスやメソッドをぼんやり理解してHello Worldを出したけど、次何をしたらいいかわからない！という方にとって一歩踏み出せるような、そんな内容を目指します。
(自信が無い、まだ終わってない人は[一番かんたんなJava入門](https://nobuo-create.net/category/java-beginner/), [Java入門](https://www.asahi-net.or.jp/~yf8k-kbys/newjava0.html) 等を片手に読み進めましょう！)

この記事で、もし、間違っている部分があればご指摘くださいっ！
では、始めましょうー！


※本記事は編集中です....

次の記事→（Spigot(Paper) 2020年度 プラグイン作り方 入門＃02(サブタイトル未定)）

## この記事の目標

- Spigotプラグインの環境構築ができる
- プロジェクトの作成

#環境構築
鬼門の環境構築です・・・！

基本的なJava自体の開発環境は揃っていると思いますが、まだ一度もしたことが無いという方はJava入門記事を参考にJavaの開発環境を一度構築してみてください。
以下は、Spigot(Paper)プラグインの開発環境を構築する注意点等を纏めてます。
焦らずゆっくり行いましょう！

##エディタ（IDE）について
エディタはどれでも大丈夫です。
この記事では[IntelliJ IDEA 2019.3.5](https://www.jetbrains.com/ja-jp/idea/download/other.html) を使います。
執筆時点で一番新しい[IntelliJ IDEA 2020.1.1](https://www.jetbrains.com/ja-jp/idea/download/#section=windows)がリリースされていますが、うまくいかないという方は[IntelliJ IDEA 2019.3.5](https://www.jetbrains.com/ja-jp/idea/download/other.html) で行ってください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/69509fbf-7b64-0cf1-cbc0-3630ae90d992.png)

##JDKのバージョンの注意点
開発に使用するJDKは、大きく分けてOracleのJDKとOpenJDKの2種類がありますが、どちらでも大丈夫です。
しかし、バージョンは気を付ける必要があります。__（重要！）__

__①Spigotを実行するJavaのバージョン　≧　②プラグインコンパイル時に使うJava(javac)のバージョン__

になっている必要があるのです。
コンパイルに使うJavaのバージョンの方が高いとプラグインが正常に読み込まれない可能性があります。
もし、「プラグインはビルドできたのに、プラグイン読み込み時にエラーが起きて正常に読み込まれない」という方がいたら、Javaのバージョンを見直してみてください。（ここで躓いてしまう方もいましたので・・・。）
とは言っても、基本的に①Spigotの実行でJava SE 7以下は使われていないはず （2020/5/30 時点）なので、②プラグインコンパイル時に使うJava(javac)に、Java SE 8の[ Oracle JDK（ダウンロードリンク）](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html)を選んでおくと、特に問題は起こらないと思います。
よくわからない！という方は[ Java SE 8 の Oracle JDK ](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html)をダウンロードしてインストールしておきましょう。

###Java(①Spigotを実行するJava)のバージョン確認方法
コマンドプロンプトを立ち上げて```java -version```を実行します。
1.8.0となっていますが、Java 8のことです。

```shell-session 
C:\Users\ユーザー名>java -version
java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)
```

バージョンが表示されない場合は
javaコマンドへのパスが通っていない可能性があります。
（javaコマンドへのパスの通し方はhttps://www.javadrive.jp/start/install/index4.html を参照）

```shell-session 
C:\Users\ユーザー名>java -version
'java' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
```

###Java(②プラグインコンパイル時に使うJava)のバージョン確認方法
IntelliJ IDEA Communityでは、プロジェクト毎にJDKを選択することができます。
> プロジェクトは、アプリケーションを構成するすべてのものを保持するディレクトリです。
（https://pleiades.io/help/idea/working-with-projects.html より引用）

1．JDKのバージョンを確認したいプロジェクトを開きます。
2．上のメニューから ファイル→プロジェクトの構造→プロジェクトを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/94e5d183-02bb-349a-e7ea-34ad85cd1e3c.png)


##Gradle
入門ではjavacコマンド等を使ってclassファイルにコンパイル・実行をしたかもしれませんが、プラグイン作成では依存関係や必要なファイルが多いので管理が大変です。
なので、ビルドにはGradleを使用します。
Gradleとは、様々なソースファイルや依存関係を管理し一つのjarファイルにコンパイル・ビルドするためのツールです。

GradleはIntelliJ IDEAに最初からついてくるので新たにインストールする必要は無いです。

##テストサーバーの用意
作成したプラグインをテストするためのサーバーが必要です。
この記事ではSpigotを使用します。
バージョンは最新の1.15.2を使用します。
フォークにPaperMCがありますがそちらでも大丈夫です。
（Spigotサーバーの建て方はhttps://blog.mkserver.jp/2019/05/19/spigot-server-build/ を参照）

##執筆時点の環境
私の執筆時点での環境です。

|ツールの項目|名|バージョン|
|:--:|:--:|:--:|
|IDE|IntelliJ IDEA Community Edition|2019.3.5|
|JDK|Oracle JDK|1.8.0_251"|
|ビルドツール|Gradle||
|テストサーバー|Spigot MC|1.15.2|
|OS|Windows 10|1909|

#Spigotプラグインプロジェクトの新規作成
Spigot向けプラグインを作り始めましょう！
今回はマイクラログイン時にチャット欄にHello Minecraft Plugin!!を出すことが目標です。
##Minecraft Developmentのインストール
開発を始める前に、Minecraft Developmentがインストールされてない方はインストールしておきましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/a383f2de-78c9-2f3f-1811-1dbd6e9c2d4c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/78bc67af-f5c0-81c2-19f1-a86729ebfc6f.png)
「Minecraft」を検索してMinecraft Evelopmentが見つかったら、Installをクリックしてインストールします。
インストールが完了したら、一度IntelliJ IDEAを終了して、リスタートしてください。
Minecraft DevelopmentはSpigotプラグインのひな形を作成してくれるIntelliJ IDEAの拡張機能です。



##IntelliJ IDEAを開く

IntelliJ IDEAを開きましょう！```新規プロジェクトの作成```をクリック。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/223720ef-a14f-4afd-f10b-cf74900e75f2.png)

##Spigotプラグインの新規作成

Spigot Plugin にチェックを入れて```プロジェクト SDK:```から目的のJDKを選択します。
ここで選択するJDKはプラグインコンパイル時に使うJavaです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/37a08a3b-e9b7-6e49-9a58-0b41d5705be0.png)

![名称未設定 4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/7f43a4fe-6cac-311f-8df1-1d55ed64ae4c.png)

- グループIDはプラグインが所属するグループの名前です。
名前が他のプラグインと被らないようにしましょう。
⇒ ```com.github.rnlin.tanosii``` にしました。

- アーティファクトIDはプラグインを区別するための名前です。
⇒ ```originalplugin``` にしました。

- バージョンはプラグインの初期のバージョンです。
特にこだわりが無ければそのままで大丈夫です。
ちなみにSNAPSHOTはこのバージョンはまだ開発途上という意味で慣例的に使われます。

最後にMaven → Gradle を選択して次へをクリックします。

![名称未設定 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/dee69dd5-9d6a-2713-ba72-59618ad29752.png)

殆ど変更しなくても大丈夫です。
一か所だけ```Main Class Name```が```com.github.rnlin.tanosii.originalplugin.Originalplugin``` になっていますが、```OriginalPlugin``` に変更します。
せっかくなのでJavaのコーディング規約に合わせました！コーディング規約はこれからも見る癖をつけておきましょう...!（私も頑張ります...)
（Javaのネーミング規約:https://future-architect.github.io/coding-standards/documents/forJava/ を参照）

下の```Original Setting```の方はお好みに設定してください。
この項目はplugin.ymlに書き込まれる設定項目で、後で変更することもできます。
私は```説明```と```Autohrs```だけ設定しました！
```次へ```をクリックします。

![名称未設定 5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638023/43888e35-187b-a834-387e-df24a09e4086.png)
プロジェクト名とプロジェクトを保存するフォルダを設定します。
プロジェクト名はアーティファクトID（originalplugin)と同じものにしました。
保存するフォルダはわかりやすいところにしましょう！
```完了```をクリックします。

おめでとうございます！！
環境構築とプロジェクトの作成はこれで終わりです！