Minecraft プラグインサーバー 立て方

# はじめに
Minecraftのプラグインサーバーの立て方を紹介します
Aternos等の無料サイトを利用したものではなくポート開放+SpigotMC/PaperMCのような立て方です
またインターネット環境によってはポート解放等ができない場合がございます
その場合は素直にあきらめてください

# jarの入手
まずは肝心のSpigotMC/PaperMCを入手します

PaperMCの方が簡単なので先に紹介します

PaperMCの場合

1. PaperMCのダウンロードサイト(https://papermc.io/downloads) に行く
1. 入手したいバージョンをダウンロードする    
 \*旧バージョンはLegacyからダウンロードできます

SpigotMCの場合

1. Git for windows(https://gitforwindows.org/) をインストールする 
\*インストール先フォルダー以外はデフォルトでOK

1. BuildTools.jarをSpigotMC(https://www.spigotmc.org/wiki/buildtools/) からダウンロードする
 Running BuildToolsの辺りのURLからダウンロードできます

1. 適当なディレクトリを作成してBuildTools.jarを入れる
1. ディレクトリ内で右クリックしGit Bash Hereを選択する
1. SpigotMC(https://www.spigotmc.org/wiki/buildtools/) の入手したい
 バージョンのCodeをGit Bashに打ち込んでEnterで実行する
\*ビルドが始まるので数分待ちます
ビルドが完了したらディレクトリ内に目的のspigot-バージョン.jarが生成されます

***SpigotMCのjarを直接ダウンロードできるサイトもありますが
DMCAの関係でOUTなのでこの方法で入手しましょう 詳しくは[ここ](https://www.spigotmc.org/wiki/unofficial-explanation-about-the-dmca/)を読んでください***

# サーバーの起動
spigotかpaperのjarを入手したら早速サーバーを立てていきます

1. 適当なディレクトを作成して入手したjarを入れる
2. 起動バッチファイルをディレクトリ内に作成する  
新しいテキストファイルを作成します  
拡張子を.txtから.batに変更します(名前は何でも可 例 起動.bat)
ファイルの編集で

```text:起動.bat
@echo off
java -jar -Xmx?G -Xms?G ~.jar
pause
```

の用に変更します

-Xmx?Gはサーバーのメモリ割り当ての最大値 (例 -Xmx2G 2G割り当て)
-Xms?Gはサーバーのメモリ割り当ての最小値 (例 -Xms2G 2G割り当て)
\~.jarは入手したjarの名前 (例 spigot-1.12.2.jar)

なのでそこは自分で変更してください

3. 一度作成したバッチファイルを起動します  
 \*eula(ソフトウェア利用許諾契約)への同意を求められるので適当なキーを押してコマンドプロントを一度閉じます
4. ディレクトリ内に生成されているeula.txtのeula=falseをeula=trueに変更し  
もう一度バッチファイルを起動します

Done (~~~s)! For help, type "help" or "?"みたいなのが表示されたら
無事サーバーを起動できています

一度マインクラフトを起動しマルチプレイからダイレクト接続にlocalhostと入力し接続してみてください
ログインできればサーバーは立てれています

# ポート開放
***ここからがサーバー作成の一番の挫折ポイントです***

今の状態だと自分はサーバーに入れるけど他人は入ることができません 
そのために行うのが***ポート開放***というものです

あまりPC関係に詳しくない人だと何をしているのか全く分からないのでよく挫折します

まずポートというのが何なのかをある程度知っておくべきだと思うので説明します
### ポート
プログラムが外部と通信するときに決められた出入口があります 
これをポートといいます (文字通り港のような感じ)
このポートには番号が割り当てられていてポートを一つのプログラムが利用していると
他のプログラムは同じ番号を利用できません
このポートはPCが開け閉めを管理しています 
(ウイルスバスターを利用している場合そのソフトが管理している場合もあります)

今回立てたサーバーも外部と通信してマルチプレイをするのでポートを開けてあげる必要があります
デフォルトは25565という番号のポートを使用するのでこのポートを開けます

## ポート開放
***ウイルスバスターを利用している場合はWindowsファイアウォールの設定をウイルスバスターの設定からしか
変更できないようになっていることが多いのでウイルスバスターごとのポートの許可のやり方を調べてください***

ウイルスバスターの制約がない場合
1. コントロールパネルを開く (ファイル名を指定して実行からcontrolで起動します)
2. システムとセキュリティからWindows Defender ファイアウォールを選択する
3. 詳細設定を開く
4. 受信の規則の新しい規則を作る 
ポート→○TCP○特定のローカルポート25565→○接続を許可する→ドメインのチェックを外す→わかりやすい名前を付けて完了
5. 送信の規則の新しい規則を作る 
ポート→○TCP○特定のローカルポート25565→○接続を許可する→ドメインのチェックを外す→わかりやすい名前を付けて完了

これでPCのファイアウォールは25565での通信を許可します
注意すべきなのはこれは***PCが許可しただけ***です

## ルーターのポート開放
外部から接続するときにPCだけでなく
***ルーターのファイアウォールのポートも開いてあげる必要がある***のです

```text
 現在の状況                                        　ポートが解放できている状態
  外部                                                 外部
   ↓                                                    ↓
 ルーター ファイアウォール 25565無許可                   ルーター ファイアウォール 25565許可
   ↓                                                    ↓
  PC ファイアウォール 25565許可                          PC ファイアウォール 25565許可
   ↓                                                    ↓
 サーバー                                              サーバー
```

なのでルーターのポートを開いていきます

ルーターごとに管理画面への入り方は若干違います

Buffaloルーターはおそらく
 http://192.168.11.1/ で管理画面に行けます

他は自分の使っているルーターで調べれば出てくるはずです

管理画面に入る際user名とpasswordを聞かれます
初期設定の際に設定している場合はそれを入力してください
身に覚えがない場合は初期user名とpasswordがルーターによっては決められている場合があるので調べてください
最終手段としてルーターの初期化もありますが***プロバイダの設定も消えるのでプロバイダのアドレスが
ない場合絶対にしないでください***
最悪の場合プロバイダに問い合わせなくてはいけません

管理画面に入れたら ポート転送やポート変換、アドレス変換と書かれている設定を変更します

pcのコマンドプロントにipconfigと打ち込んでIPv4アドレスに書いてある番号に
対してのポート25565の通信を許可すればポート開放は完了です
IPv4アドレスは自宅のネット機器の識別番号みたいなもので今回はPCの名前みたいなものです 
デフォルトゲートウェイのアドレスがルーターに該当します

ポート開放ができたかどうかはhttps://www.akakagemaru.info/port/tcpport.php に25565と打てば確認できます

無事解放できていたら　https://www.cman.jp/network/support/go_access.cgi で調べたグローバルipアドレスを入ってもらいたい人に伝えましょう

## おまけ

グローバルIPアドレスはプロバイダでサービスを利用していない限り変化します
DDNSを用いると自分の好きなアドレスで固定できるので検討してみてください
無料のドメインはNo-IPなどが有名です

# 使用したサイト

Git for windows https://gitforwindows.org/
SpigotMC https://www.spigotmc.org/
PaperMC https://papermc.io/
KAGEMARU-info https://www.akakagemaru.info/
CMAN https://www.cman.jp/