Minecraftサーバーの設定
ここでは、バニラサーバーの設定について解説します。
Bukkitに関する設定(bukkit.ymlなど)に関してはBukkitサーバーの設定のページをご覧ください。
スポンサーリンク
目次
生成されるファイル
バニラサーバーでは以下のファイルが生成されます。
- banned-ips.json
BANしたIPの設定です、通常はコマンドから操作します。 - banned-players.json
BANしたプレイヤーの設定です、通常はコマンドから操作します。 - eula.txt
EULAです、同意しないと先には進めません。 - ops.json
OPユーザーの設定です、通常はコマンドから操作します。 - server.properties
サーバーの設定です、設定を変更するにはこれを編集します。 - usercache.json
ユーザーの情報をキャッシュするファイルです、普通は触らなくて構いません。 - whitelist.json
ホワイトリストの設定です、通常はコマンドから操作します。
EULA
eula.txtにはMinecraftサーバーを動かす際に同意する必要のあるライセンス条項の設定を行います。
Minecraftエンドユーザーライセンス条項を確認して、同意できる場合はeula=false
をeula=true
に変更します。
当然ながらに、同意(eula=true
に変更)しないと起動しません。
サーバーアイコンの設定
server.propertiesなどと同じ場所にserver-icon.pngというファイル名のpng画像を配置すると、それがサーバーのリストに表示されます。
ファイル形式はpng、大きさは64x64ピクセル、透過が使用可能です。
自分のサーバーを分かりやすく、見分けやすくするためにぜひとも設定しておきましょう!
server.propertiesの設定
server.propertiesはサーバーの設定になります。テキストファイルなのでメモ帳(notepad.exe)などで開いて構いません。
デフォルトでは存在しない設定値も一部あります。
設定 | デフォルト | 説明 |
---|---|---|
allow-flight | false | MODやプラグインを使用した飛行を許可するか? trueにすれば飛行が許可され、falseにすると飛行が禁止(5秒以上空中にいるプレイヤーがキック)されます |
allow-nether | true | ネザーへの移動を許可するか? trueにすればネザーポータルが動作し、falseにすると動作しなくなります |
broadcast-console-to-ops | true | コンソールやコマンドブロックからのコマンド実行の結果をOPに表示するか? |
difficulty | 1 | サーバーの難易度
|
enable-command-block | false | コマンドブロックを有効にするか? |
enable-query | false | 通常より詳細なサーバーの情報を取得できるようにするか? |
enable-rcon | false | リモートからコマンドなどを実行するrconを使用するか? |
enforce-whitelist | false | ホワイトリストを強制するか? trueでホワイトリストが有効の場合、リロード時にホワイトリストに存在しないユーザーはキックされます |
force-gamemode | false | デフォルトのゲームモードを強制するか? trueならログイン時にデフォルトのゲームモードに変更されます |
gamemode | 0 | ゲームモードの設定
|
generate-structures | true | 村などの構造物を生成するか? falseでもダンジョンは生成されます |
generator-settings | なし | ワールドをカスタムするための設定 |
hardcore | false | ハードコアを有効にするか? 有効にすると死亡したユーザーはBANされます |
level-name | world | ワールド名とそのデータを保存するディレクトリ名の設定 |
level-seed | なし | 新しくワールドを生成する場合に使用するSeed値 |
level-type | DEFAULT | 生成されるマップの種類
|
max-build-height | 256 | ブロックを設置できる最大高度 |
max-players | 20 | 最大プレイヤー数 |
max-tick-time | 60000 | 1チックにこれ以上の時間がかかるとサーバーが動作を停止したと判断しシャットダウンする -1なら無効、単位はミリ秒 |
max-world-size | 29999984 | 世界の最大サイズを半径で設定します |
motd | A Minecraft Server | サーバーリストに表示されるメッセージ 改行(\nで指定)、色コード、一部の記号や特殊文字、日本語が使えます 記号、特殊文字、日本語はUnicodeエスケープシーケンスに変換する必要があります |
network-compression-threshold | 256 | パケットのサイズが設定した値以上なら圧縮され、設定した値未満ならそのまま送信します -1なら圧縮を無効に、0ならすべて圧縮します 数値が小さいほど圧縮率が上がりますが、実際には圧縮のオーバーヘッドがあるので小さすぎると効果が薄れます |
online-mode | true | 公式の認証サーバーに接続してユーザーを認証するか? BungeeCordを利用する場合など、ごく一部の状況以外ではfalseにしないこと |
op-permission-level | 4 | OPのデフォルト権限レベル、ops.jsonで個別に設定できる
|
player-idle-timeout | 0 | 指定した時間操作していないプレイヤーをキックする。0なら無効(単位: 分) |
prevent-proxy-connections | false | VPNやプロキシを使用しているユーザーの接続を拒否する機能です サーバーに送信された情報がMojangの認証サーバーと一致しない場合プレイヤーがキックされます |
pvp | true | PvP(プレイヤー同士の攻撃)を許可するか? falseにしても相手の足元に溶岩や炎などを置いたりする攻撃は防げません |
query.port | 25565 | サーバー情報を取得する際に使用するポート(UDP) |
rcon.password | なし | rconのパスワード |
rcon.port | 25575 | rconのポート |
resource-pack | なし | リソースパックのURLを指定します。:や=は\でエスケープする必要があります。 例: https\://example.com/resource.zip?abc=def |
resource-pack-sha1 | なし | リソースパックのSHA-1ハッシュ、必須ではない |
server-ip | なし | サーバーが複数のIPアドレスを持っている場合などに指定するバインドIP。空白が推奨されている |
server-port | 25565 | サーバーのポート |
snooper-enabled | true | スヌーピングデーターを公式サーバーに定期的に送信するか? |
spawn-animals | true | 動物がスポーンするか? |
spawn-monsters | true | 敵性MOBスポーンするか? |
spawn-npcs | true | 村人がスポーンするか? |
spawn-protection | 16 | スポーン地点を中心に保護する範囲を半径で設定しますサーバーにOPが設定されていない場合無効になります |
use-native-transport | true | Linuxサーバーを使用する際にパケットの送受信を最適化する機能を使用するか |
view-distance | 10 | サーバーが送信するワールドデータの量(表示距離)を半径で設定 |
white-list | false | ホワイトリストを使用するか? |
JVM引数の設定
JVM引数(いわゆるメモリ割り当て)ですが、ほとんどデフォルトで大丈夫です。
「○○ってオプションが効果あるよ」みたいな記事が多いですが、それらのオプションはほぼ大抵がデフォルトで有効になってます。ほとんど眉唾です。
意味も分からずコピペでガチャガチャと弄り倒すくらいなら触らない方がマシです。
そのため、ここでは必要最低限のオプションだけを解説します。
-server
サーバーVMを使用します。
最近は-server
がデフォルトだったりするので指定する意味は薄いのですが、明示しておきます。
-Xms, -Xmx
メモリの割り当てです。
必要以上に割り当てるとOSがディスクキャッシュとして利用できるメモリが減ってしまうので、多ければ良いという訳でもありません。
一方で-Xms
と-Xmx
を同じ値に設定した方がメモリ不足時の領域拡張のコストがなくなるので良いという情報もあります。
他のソフトウェア(データベースなど)が必要とする分を考慮したうえで、不足がないように設定しましょう。
-XX:MetaspaceSize
良く分からないなら触らなくて構いません。クラスローダーがどうのこうのと説明されてわかる人だけが触ればいい。
ちなみに、-XX:MetaspaceSize
はMetaspace不足時のFullGCを調整する設定であって、Metaspaceの初期値指定ではないです。
Metaspaceの初期値指定は-XX:InitialBootClassLoaderMetaspaceSize
です。
-XX:+UseG1GC
G1GCという比較的新しいGCを使用します。
今時のJVMであれば大抵はデフォルトでG1GCですが、GCに関しては念のために明示しておきます。
-XX:MaxGCPauseMillis
G1GCの停止時間目標と呼ばれる設定です。
GCの際の停止時間が指定した時間より短くなるように調整します。デフォルトは200ms(4チック)です。
あまり値が小さすぎるとオブジェクトを回収しきれずにFullGCが発生してしまいますし、かといって大きすぎると普段のGCでTPSが低下してしまいます。
-XX:+DisableExplicitGC
プログラム側からのGCの呼び出しを無効化します。
指定しておきましょう、プログラムからGCを呼び出したって意味がないです。
JVMに任せたので構いません。
-XX:+UseStringDeduplication
文字列の重複を検出してひとまとめにする設定です。
メモリを少し節約する効果があるようですが、その分CPUの負荷が少し上がるようです。
メモリに余裕のある環境なら設定する必要はないでしょう。
最終的な設定値
オンラインユーザー数や使用しているプラグイン、同居しているサーバーの状況など、必要なメモリ量を左右する条件は多岐にわたります。
「こう設定すればOK」というようなおまじない的設定はありませんが、参考までに実際に設定している引数を紹介しておきます。
java -server -Xms8G -Xmx8G -XX:+UseG1GC -XX:+DisableExplicitGC -jar ./server.jar
実際に自分のサーバーでGCログなどを取りながら最適な設定値を探ると良いでしょう。