Minecraft サーバを AWS で作る

Minecraft のサーバを作る。いろんな方が既に記事を書いているので目新しさはない。この組み合わせで動作したという確認。


# 環境

(2020/05/29 記事初出時)
- AWS Tokyoリージョン t2.midium
- Ubuntu 20.04
- minecraft_server_1.15.2.jar
- openjdk-14-jre

( 2021/09/05 再確認時 )
- AWS Tokyoリージョン t2.midium
- Ubuntu 20.04
- minecraft_server_1.17.1.jar
- openjdk-16-jre


-

# Minecraft サーバとは

Minecraft はネットワークで通信してマルチプレイができる。マルチプレイをするにはネットワーク内でMinecraftをプレイしているマシンを1台公開してそこに他のプレーヤがつなげるやりかたと、ネットワーク内でサーバ専用サービスを実行するホストを作りサーバにするやりかたの2つがある。

Minecraft でマルチプレイをするには Minecraft の系統と、バージョンを合わせる必要がある。

## Minecraft の系統

マルチプレイをするときには、系統を合わせないといけない。今の主な系統は2つ

- Java 版
- 統合版 (Bedrock Edition)


系統は、プレイする全員、および、サーバその系統に合わせる必要がある。
なお、現在公開されているサーバのソフトウェアは Java 版系統。
統合版のサーバも公開されている( https://help.minecraft.net/hc/en-us/articles/360035131651-Dedicated-Servers-for-Minecraft-on-Bedrock- ) が、アルファ版。

ちなみに、上記以外の系統も存在する。サーバソフトウェアは公開されていないが、ピア2ピア的にマルチプレイができる。その場合はそれぞれの系統同士でしかマルチプレイできない。

- ブラウザ版
- Raspberry Pi edition
- Earth edition
- Education edition
- Legacy console editon (現在、PS4,Nintendo Switch等は統合版にアップデート、それ以外の旧いプラットフォームではLegacy conosole edition 同士でも異機種だとマルチプレイできないぽい)
- New Nintendo 3DS Edition

- 他に Minecraft China というのがあるがナンダ？  https://minecraft-ja.gamepedia.com/Minecraft_China



## バージョン


サーバのバージョンと、マルチプレイの参加者の Minecraft のバージョンを合わせる必要がある。
バージョンはJava版において、2020/5/29現在最新のものは以下の2つ。

- 1.15.2 (正式版)
- 20w21a  (開発版1.16のスナップショット)

であるが、こちらからダウンロード

(2021/09/05 に確認時点では 1.17.1 )

https://www.minecraft.net/ja-jp/download/server/

できるサーバのバージョンは正式版の最新のものである 1.15.2。

(2021/09/05 に確認時点では 1.17.1 )


それ以外の old バージョンや、開発版はこちらから。

https://mcversions.net/


# サーバの動作環境

java で動作するので Windows / Mac / Linux で動作する。もちろん、Raspsberry Piも！


# サーバを動かすのは難しい？

https://minecraft.gamepedia.com/Tutorials/Setting_up_a_server
によると、

> Setting up a server takes some time, and some technical knowledge. Don't try to set up a server unless you have some basic computer and networking abilities.

とあるけれども、試してみたらあっさり動いた。

# AWS サーバを起動


まずは TOKYOリージョン、t2.midium を利用して、Ubuntu 20.04を起動する。

ログイン後、

```

$ sudo apt update
$ sudo apt upgrade 
```
をしたあと、Java だけインストール。
とりあえずUbuntu20.04で最新のJREを入れてみた。

```

$ sudo apt install openjdk-14-jre
```

(2021/09/05 では、openjdk-14-jre と  1.17.1 の組み合わせで以下のエラーが出た。上記を sudo apt install openjdk-16-jre と代えて解決。)

```
Error: LinkageError occurred while loading main class net.minecraft.server.Main
	java.lang.UnsupportedClassVersionError: net/minecraft/server/Main has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 58.0
```



https://www.minecraft.net/ja-jp/download/server/
からサーバをダウンロード。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/35351678-ee17-7625-49f9-b871be33efce.png)




リンクをマウスで右クリックしてアドレスを取得、ssh で以下に貼り付けた。

```

$ wget https://launcher.mojang.com/v1/objects/bb2b6b1aefcd70dfd1892149ac3a215f6c636b07/server.jar
```


起動してみる


```

$ java -Xmx1024M -Xms1024M -jar server.jar nogui
[08:18:47] [main/ERROR]: Failed to load properties from file: server.properties
[08:18:47] [main/WARN]: Failed to load eula.txt
[08:18:47] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
```

という結果になった。

```

$ ls -alh
```
としてみたら、

```

total 35M
drwxr-xr-x 5 ubuntu ubuntu 4.0K May 28 08:18 .
drwxr-xr-x 3 root   root   4.0K May 28 07:51 ..
-rw-r--r-- 1 ubuntu ubuntu  220 Feb 25 12:03 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3.7K Feb 25 12:03 .bashrc
drwx------ 2 ubuntu ubuntu 4.0K May 28 07:56 .cache
-rw-r--r-- 1 ubuntu ubuntu  807 Feb 25 12:03 .profile
drwx------ 2 ubuntu ubuntu 4.0K May 28 07:51 .ssh
-rw-r--r-- 1 ubuntu ubuntu    0 May 28 08:01 .sudo_as_admin_successful
-rw-rw-r-- 1 ubuntu ubuntu  181 May 28 08:18 eula.txt
drwxrwxr-x 2 ubuntu ubuntu 4.0K May 28 08:18 logs
-rw-rw-r-- 1 ubuntu ubuntu  35M Jan 17 10:06 server.jar
-rw-rw-r-- 1 ubuntu ubuntu  940 May 28 08:18 server.properties
```

とあって、eula.txt ができているようだ。

```

$ vim eula.txt 
```

として、中身の

```

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Fri May 29 19:21:06 JST 2020
eula=false
```

false を true に書き換えて保存。

もう一度起動


```

$ java -Xmx1024M -Xms1024M -jar server.jar nogui
[08:20:14] [main/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498]
[08:20:14] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
[08:20:14] [main/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0]
[08:20:14] [main/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498]
[08:20:14] [main/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0]
[08:20:14] [Server thread/INFO]: Starting minecraft server version 1.15.2
[08:20:14] [Server thread/INFO]: Loading properties
[08:20:14] [Server thread/INFO]: Default game type: SURVIVAL
[08:20:14] [Server thread/INFO]: Generating keypair
[08:20:15] [Server thread/INFO]: Starting Minecraft server on *:25565
[08:20:15] [Server thread/INFO]: Using epoll channel type
[08:20:15] [Server thread/INFO]: Preparing level "world"
[08:20:15] [Server thread/INFO]: Found new data pack vanilla, loading it automatically
[08:20:15] [Server thread/INFO]: Reloading ResourceManager: Default
[08:20:47] [Server thread/INFO]: Loaded 6 recipes
[08:20:47] [Server thread/INFO]: Loaded 825 advancements
[08:20:53] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[08:20:53] [Server-Worker-1/INFO]: Preparing spawn area: 0%
[08:20:53] [Server-Worker-1/INFO]: Preparing spawn area: 0%
[08:20:54] [Server-Worker-1/INFO]: Preparing spawn area: 0%
[08:20:54] [Server-Worker-1/INFO]: Preparing spawn area: 0%
[08:20:55] [Server-Worker-1/INFO]: Preparing spawn area: 1%
[08:20:55] [Server-Worker-1/INFO]: Preparing spawn area: 2%
[08:20:56] [Server-Worker-1/INFO]: Preparing spawn area: 4%
[08:20:56] [Server-Worker-1/INFO]: Preparing spawn area: 5%
[08:20:57] [Server-Worker-1/INFO]: Preparing spawn area: 7%
[08:20:57] [Server-Worker-1/INFO]: Preparing spawn area: 10%
[08:20:58] [Server-Worker-1/INFO]: Preparing spawn area: 12%
[08:20:58] [Server-Worker-1/INFO]: Preparing spawn area: 14%
[08:20:59] [Server-Worker-1/INFO]: Preparing spawn area: 17%
[08:20:59] [Server-Worker-1/INFO]: Preparing spawn area: 19%
[08:21:00] [Server-Worker-1/INFO]: Preparing spawn area: 22%
[08:21:00] [Server-Worker-1/INFO]: Preparing spawn area: 24%
[08:21:01] [Server-Worker-1/INFO]: Preparing spawn area: 26%
[08:21:01] [Server-Worker-1/INFO]: Preparing spawn area: 29%
[08:21:02] [Server-Worker-1/INFO]: Preparing spawn area: 32%
[08:21:02] [Server-Worker-1/INFO]: Preparing spawn area: 33%
[08:21:03] [Server-Worker-1/INFO]: Preparing spawn area: 36%
[08:21:03] [Server-Worker-1/INFO]: Preparing spawn area: 38%
[08:21:04] [Server-Worker-1/INFO]: Preparing spawn area: 41%
.
.
.
```

起動したようだ。

# ポート公開

TCP25565 と UDP25565 を開放したら、外部から接続し、プレイできた。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139524/0fa242fc-488b-51ce-f371-0a4e1486e232.png)