最強のPocketMineプラグイン開発環境を作る。

# 挨拶
あけましておめでとうございます。2019年最初の記事を書きました。
寒さにやられてコーディングするやる気が起きず苦しんでいます()
ちなみにこれが二回目に書いた記事です。不定期ですが頑張って書いていきます。

# この記事について
自分が最強だと思う環境を記事にして書いてみました。

# PocketMineとは
[PocketMine-MP](https://ja.wikipedia.org/wiki/PocketMine-MP)という名前のphpの[MCBE(Minecraft Bedrock Edition)](https://minecraft-ja.gamepedia.com/Bedrock_Edition)専用のサーバーソフトです。
2019年1月4日現在も開発が続いています。   

# 環境
・Windows10
・[PocketMine-MP](https://github.com/pmmp/PocketMine-MP)
・[php(7.2)](https://ci.appveyor.com/project/pmmp/php-build-scripts/build/artifacts)
・[PhpStorm 2018.3.2](https://www.jetbrains.com/phpstorm/)

# セットアップ
Composerのセットアップとかをしていきます。

## php のインストール
1. [ここ](https://ci.appveyor.com/project/pmmp/php-build-scripts/build/artifacts)からphp-7.2.13-vc15-x64をダウンロード(x32には非対応)
2. ダウンロードしたものを`C:\php`に解凍(フォルダ名はなんでもいいですがこの記事ではこれで行きます。)

### PATHの設定
1. **コントロールパネル > システムとセキュリティ > システム > システムの詳細 > 環境変数** を開きます。
2. システム環境変数から**Path**を開く
3. `C:\php` を追加する。
4. 保存

## Microsoft Visual C++ のインストール
・Visual Studio が既に入っている人はこの手順を無視出来ますがComposerのインストールで失敗したら試して下さい。  

[ここ](https://visualstudio.microsoft.com/ja/downloads/)から **その他のツールとフレームワーク > Visual Studio 2017 の Microsoft Visual C++ 再頒布可能パッケージ** をダウンロードしてインストール

## Composer のインストール
1. [ここ](https://getcomposer.org/download/)からWindows Installerをダウンロード
2. `C:\php`を指定して`Next`を押しインストール

## PhpStorm
有名なJetBrains社のIDEです。  
学生は無料で使う事が出来ます(申請方法については[こちら](https://qiita.com/f0reachARR/items/a31839c31387c2f3b1d4)の記事を参考にして下さい。)

[ここ](https://www.jetbrains.com/phpstorm/)からダウンロードしてセットアップどうりに進めればOKです。

## 再起動
上の作業が終わったら念の為PCを再起動しておきましょう

# 開始
セットアップ長すぎですがまだあります。がんばりましょう！

1. PhpStormを起動する。
2. **Create new Project > PHP Empty Project** の順に進む
3. 場所を指定して**Create**を押す
![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/bcafec04-287b-67f1-7f34-db4874944144.png)

## 設定
1. `Ctrl+Alt+S`を押します。
2. **Language & Framework > PHP** を開いてこのように設定する。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/1baf7ba1-808b-ef7c-8b93-d964af5b22f7.png)
設定はこれで終わりです。

## composer.jsonを作る。
1. `Terminal`を開いて`composer init`を入力
![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/cf7d2722-f2db-afdf-0f83-287fb4bc4b11.png)
2. そうするとこんな感じになるのでEnterを押していきます。
3. セットアップが終わると`composer.json`が生成されるので開いてみましょう
![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/c9240cd1-06d0-7f2f-f86d-8e54e43fd9d1.png)  
中身はこんな感じ  
![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/8e986dc2-5c5e-f9c9-6624-196ef5f3eeaa.png)

### composer.jsonの書き換え
pmmpのプラグイン開発環境を整えるにはここからが重要です。
必要なものを書いていきます。

```json:composer.json
{
  "name": "inkohx/testplugin",
  "type": "project",
  "authors": [
    {
      "name": "InkoHX"
    }
  ],
  "require": {
    "php": ">=7.2.0",
    "php-64bit": "*",
    "ext-bcmath": "*",
    "ext-curl": "*",
    "ext-crypto": "^0.3.1",
    "ext-ctype": "*",
    "ext-date": "*",
    "ext-gmp": "*",
    "ext-hash": "*",
    "ext-json": "*",
    "ext-mbstring": "*",
    "ext-openssl": "*",
    "ext-pcre": "*",
    "ext-phar": "*",
    "ext-pthreads": ">=3.1.7dev",
    "ext-reflection": "*",
    "ext-sockets": "*",
    "ext-spl": "*",
    "ext-yaml": ">=2.0.0",
    "ext-zip": "*",
    "ext-zlib": ">=1.2.11",
    "mdanter/ecc": "^0.5.0",
    "pocketmine/pocketmine-mp": "^3.5.0",
    "pocketmine/raklib": "^0.12.0",
    "pocketmine/spl": "^0.3.0",
    "pocketmine/binaryutils": "^0.1.0",
    "pocketmine/nbt": "^0.2.1",
    "pocketmine/math": "^0.2.0",
    "pocketmine/snooze": "^0.1.0",
    "daverandom/callback-validator": "dev-master",
    "adhocore/json-comment": "^0.0.7"
  },
  "autoload": {
    "psr-4": {
      "": [
        "src"
      ]
    }
  },
  "repositories": [
    {
      "type": "git",
      "url": "https://github.com/pmmp/PocketMine-MP"
    },
    {
      "type": "git",
      "url": "https://github.com/pmmp/RakLib"
    },
    {
      "type": "git",
      "url": "https://github.com/pmmp/SPL"
    },
    {
      "type": "git",
      "url": "https://github.com/pmmp/BinaryUtils"
    },
    {
      "type": "git",
      "url": "https://github.com/pmmp/NBT"
    },
    {
      "type": "git",
      "url": "https://github.com/pmmp/Math"
    },
    {
      "type": "git",
      "url": "https://github.com/pmmp/Snooze"
    }
  ]
}
```
めっちゃ多いですがpmmpはこれを必要とします。
後はcomposer.jsonを開くと右上にある`Update`を押すだけです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/4956b449-527c-0dcb-5b42-6064a964104f.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/1f389aab-02c3-b3fa-de07-8a19be8d4706.png)
こんなのが出てきますがOK押すだけで大丈夫です。

## plugin.ymlを作る。
1. 右クリックをして**New > File**をクリック
2. ウィンドウが出るので`plugin.yml`と打ってEnterを押す。

```yml:plugin.yml
name: TestPlugin
main: InkoHX\Test\Main
version: 1.0.0
```

## クラスを作る
1. 右クリックをして**New > Directory**をクリック
2. plugin.ymlを見ながら入力

![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/b2f57183-dcbc-a877-d1e7-f25517eba83c.png)
3. OK(Enter)で作成

![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/c76554a1-bff7-f1c1-650f-86a0b4d8d9b9.png)
4. Testの部分を右クリック **New > PHP Class**

![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/9b519409-66d9-5eec-5e6c-628e65f1b2a3.png)
5. ウィンドウが出てくるので全部入力する。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/e40c4a1c-f5ab-ed63-d8fb-998d50bd1a81.png)
6. OK(Enter)で作成

後はいつも通りにコードを書いていけばOKです。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/523ed3cf-3741-a4e7-1d75-50a882d9498f.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/248810/2e6f8717-eb74-daef-9167-792d3c56cf92.png)

# 最後に
ショートカットや他の機能を覚えればもっと楽にコーディングする事ができます。
pmmperの皆さんでメモ帳などで書いている人がたまに居るのでIDEを使った開発をしてみませんか？
楽にすばやく開発する技術も覚えていきましょう！
間違った情報があれば教えて下さい。
~~JetBrains IDE使おうよみたいな記事になってないかな~~