2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Minecraft サーバーの立て方備忘録@Mac篇

Last updated at Posted at 2024-02-04

はじめに

この記事は、Minecraft サーバーを Spigot を用いて構築する方法を纏めたものです。
インターネット上を調べても、Mac 上で Minecraft サーバーを構築する手段を一意に纏めた記事がなかなか見つからなかったので、この記事の内容としては、あくまで個人的な備忘録として作成しました。その為、ネットワークの知識やスクリプトについての知識についてはあまり深掘りしていません。読者の方のお役に立ちましたら幸いです。

目次

サーバー構築の大まかな流れ

実際のサーバー構築では、マシンの OS や其々の環境によって方法が異なりますが、この章では先に全てのマシンでの構築における大まかな流れを纏めておきます。

  1. Java のダウンロード
  2. サーバーラッパーをビルドする
  3. サーバーのプレビルド
  4. サーバーの性能要件を設定
  5. Port の開放
  6. サーバーのビルド

サーバー構築 Mac篇

ここで紹介しているサーバーの構築方法は、Mac 上での実行を想定しています。

Java のダウンロード

Minecraft サーバーを起動する為には、Java の導入が必須です。
また、Minecraft サーバーのバージョンごとに、必要とされる Java のバージョンも異なります。希望するバージョンに適当な Java をダウンロードしましょう。

Minecraft Version Java Version
- 1.7 Java 7
1.7.10 - 1.16.5 Java 8
1.17 - 1.17.1 Java 16
1.18 - Java 17

サーバーラッパーのビルド

Minecraft サーバーを構築するにあたって、先ずはサーバーラッパーをビルドする必要があります。
Minecraft のサーバーラッパーには様々な種類があり(2024/02/02 現在)、其々細かい機能や用途、性能などが異なる為、各々の目的にあったものを選びます。
今回は一般的に使用されている Spigot を利用します(尚、近年では Spigot をチューンして軽量化した Paper の使用が盛ん)。

Spigot Builder のダウンロード

Spigot は、自分の立てたいサーバーのバージョンに合わせて必要なファイルが異なります。
その為、先ずは Spigot のファイルをビルドするツールを入手します。
ビルドツールはこちらからダウンロードできます。
上記のサイトへ飛んで、最新成功ビルドの成果物 / BuildTools.jarをダウンロードします。
ダウンロードが成功したら、Spigot をビルドする用のディレクトリへBuildTools.jarを移動します。

Spigot のビルド

ターミナルを起動し、前節でBuildTools.jarを移動したディレクトリへ移動します。
カレントディレクトリで、java -jar BuildTools.jar --rev ${VERSION}を実行します。${VERSION}には、自分の立てたいサーバーのバージョンを入力してください。
実行するとビルド処理が始まり、Spigot ファイルが生成されます。処理の完了には時間がかかるので、コーヒーでも飲みつつ気長に待ちましょう。

Spigot サーバーのプレビルド

前節の処理が正常に完了すると、BuildTools.jarと同様のディレクトリ下に、spigot-${VERSION}.jarというファイルが生成されます。
このファイルが、今後使用するサーバーラッパーとなります。
生成されたspigot-${VERSION}.jarを、サーバー構築用のディレクトリへ移動します。

start.command ファイルの作成

次に、サーバーを構築する為に実行するコマンドファイルを作成します。
spigot-${VERSION}.jarを移動させたディレクトリ下に、start.commandを作成します。start.commandファイルの中身は以下の通りに記述します。

#!/bin/bash

cd /Users/${YOUR_USERNAME}/${SERVER_DIRECTORY}
export JAVA_HOME=`/usr/libexec/java_home -v ${JAVA_VERSION}`
exec java -Xms${MIN_MEMORY}G -Xmx${MAX_MEMORY}G -jar spigot-${VERSION}.jar nogui

このコマンドでは、以下のことをしています。

  • #!/bin/bashで、コンソールにbashで実行することを明示
  • cd /Users/${YOUR_USERNAME}/${SERVER_DIRECTORY}で、作業ディレクトリをサーバ構築用ディレクトリへ移動
  • export JAVA_HOME=`/usr/libexec/java_home -v ${JAVA_VERSION}`で、作業ディレクトリで使用する Java のバージョンを指定
  • exec java -Xms${MIN_MEMORY}G -Xmx${MAX_MEMORY}G -jar spigot-${VERSION}.jar noguiで、指定した条件に倣いサーバーを起動
    • -Xms${MIN_MEMORY}G -Xmx${MAX_MEMORY}Gで、サーバーの実行に使用する最小メモリと最大メモリを指定
    • -jar spigot-${VERSION}.jarで、起動する jar ファイルを指定
    • noguiで、起動時に GUI の表示をしないように設定

start.command の実行

start.commandの作成が終わったら、ターミナルでstart.commandを実行するか、start.commandファイルをダブルクリックして実行してみましょう。
正常に動作すれば、サーバーのプレビルドが始まります。

Spigot の性能要件を設定

前節でのstart.commandの実行が正常に完了すると、サーバー構築用ディレクトリ下に、eula.txtlogs/server.propertiesの3つが生成されます。
サーバーを構築し、動作させる為には、これらのファイルを正しく設定する必要があります。

eula.txt の設定

先ず、eula.txtを設定します。
EULA とは、ソフトウェア開発側とユーザー側との間に交わされる契約で、ユーザーがソフトウェアを利用する上での免責事項等が記載されています。
Spigot を利用する為には、このEULAを理解し、承諾する必要があります。
EULAを読んだ上で、それに同意する場合はeula.txtファイル内のeula=falseという記述を、eula=trueに変更してください。

EULA に同意しないと、サーバーを起動することはできません。

server.porperties の設定

次に、server.propertiesを設定します。
このファイルでは、サーバー自体の設定や、サーバーが実行する Minecraft ワールドに対する設定などが行えます。
必ずしも設定を変更する必要はありませんが、サーバー運営を快適に行う上で知っておくべき内容なので、各項目を纏めておきます。

Key Type Default Detail
allow-flight Boolean false サバイバルモードで飛行を可能にするか
allow-nether Boolean true ネザーへの移動を可能にするか
broadcast-console-to-ops Boolean true コンソールでのコマンドの実行をゲーム内のオンラインの管理者に表示するか
broadcast-rcon-to-ops Boolean true rcon でのコマンドの実行をゲーム内のオンラインの管理者に表示するか
difficulty String easy ゲーム内の難易度
enable-command-block Boolean true コマンドブロックを有効にするか
enable-jmx-monitoring Boolean false JMXによるモニターを有効化するか
enable-query Boolean false サーバー情報を取得できるプロトコルサーバーリスナーを有効にするか
enable-rcon Boolean false rcon を用いたコンソールへのリモートアクセスを許可するか
enable-status Boolean true サーバーリスト上でオンラインと表示するか
enforce-secure-profile Boolean false Mojang の公開鍵を持つユーザー以外のログインを拒否するか
enforce-whitelist Boolean false ホワイトリスト有効時に、登録されていないプレイヤーをキックするか
entity-broadcast-range-percentage Int 100 エンティティ情報を送信する距離
force-gamemode Boolean false サーバーログイン時に、プレイヤーをサーバーのデフォルトゲームモードに変更するか
function-permission-level Int 2 ゲーム内での function の実行権限
gamemode String survival サーバーのデフォルトゲームモード
generator-settings String なし ワールド生成時の設定
generate-structures Boolean true ワールド生成時の構造物を生成するか
hardcore Boolean false 一度死亡するとスペクテイターモードにするハードコアモードを有効にするか
hide-online-players Boolean false サーバーリスト上でオンラインのプレイヤーを表示するか
initial-disabled-packs String なし ワールド生成時の有効化しないデータパック
initial-enabled-packs String なし ワールド生成時の有効化しないリソースパック
level-name String world ワールド生成時のワールドデータの名前
level-seed String なし ワールド生成時のシード値
level-type String default ワールド生成時のワールドタイプ
max-players Int 20 サーバーに一度にログインできる最大人数
max-tick-time Int 60000 サーバーの応答が無いときの、サーバーを強制終了させるまでの時間
max-world-size Int 29999984 ワールド生成時のワールドのサイズ
motd String A Minecraft Server サーバーリストに表示されるメッセージ
network-compression-threshold Int 256 圧縮する最低バイト数
online-mode Boolean true 接続ユーザーを Minecraft Account Database に確認するか
op-permission-level Int 4 管理者の実行権限
player-idle-timeout Int 0 操作の無いプレイヤーをキックするまでの時間
prevent-proxy-connections Boolean false ユーザーのVPNやプロキシの利用を許可しないか
pvp Boolean true PvP を有効にするか
rate-limit Int 0 プレイヤーがキックされるまでに送信できるパケット数
rcon.password String なし rcon 接続時のパスワード
rcon.port Int 25575 rcon 接続時のポート番号
require-resource-pack Boolean false サーバー接続時に、サーバーリソースパックの導入を強制するか
resource-pack String なし サーバーリソースパックのURI
resource-pack-prompt String なし サーバーリソースパック導入時にプレイヤーに表示されるメッセージ
resource-pack-sha1 String なし リソースパックのハッシュ値
server-ip String なし サーバー接続に用いる独自ドメイン
server-port Int 25565 サーバー接続時に用いるポート番号
simulation-distance‌ Int 10 エンティティを処理する距離
snooper-enabled Boolean true snoop データを送信するか
spawn-animals Boolean true ワールド生成時の動物を召喚するか
spawn-monsters Boolean true ワールド生成時のモンスターを召喚するか
spawn-npcs Boolean true ワールド生成時の村人を召喚するか
spawn-protection Int 16 初期リスポーン地点の保護半径
sync-chunk-writes Boolean true チャンク書き込みの同期を有効にするか
query.port Int 25565 サーバー情報を取得できるプロトコルサーバーリスナーへの接続時に用いるポート番号
text-filtering-config String なし ゲーム内チャットのテキストのフィルタ
use-native-transport Boolean true Linux でのパケット送受信の最適化を有効にするか
view-distance Int 10 プレイヤーへ送信するワールドデータのチャンク半径
white-list Boolean false ホワイトリストを有効にするか

Port の開放

最後に、サーバーを公開する為にポート開放をします。
ポート開放は、サーバーを立てている自分の LAN において、ポートと呼ばれる特定一部分に対する外部からの接続を許可し、LAN 内外での接続を可能にするものです。
Minecraft サーバーに自分以外の他のプレイヤーが接続する為には、ポート開放を行い、サーバーへの外部からの接続を許可する必要があります。

今回は Mac 上でサーバーを立てる為、Port 開放には専用のアプリケーションを使用します(コマンドやシステム環境設定から設定することもできるが、Mac の場合は色々と不便なので)。

アプリケーションのダウンロード

個人的に扱いやすいと思ったアプリケーションは、Port Map です。今回はこちらを使用します。

上記のリンクからダウンロードページへ飛び、ページ中部にあるdownload the applicationを押下します。
その後、GitHub のページに飛ばされるので、そこから Latest Release の zip ファイルをダウンロードします。

開放ポートの設定

ダウンロードした zip ファイルを展開し、中に梱包されている Port Map.appを起動します。

image(1).png

起動後、アプリ画面左下にある+ボタンを押下し、Spigot の性能要件を設定の節で設定した、server-portの値と同じ値を Local Port の欄に入力します。
入力が完了したら、画面下部のAdd Mappingを押下し、ポートの開放が完了します。

image(2).png

アプリ画面で、自分の追加したポートのステータスが緑色🟢 になっていることを確認してください。赤色🔴 又は黄色🟡 になっている場合は、ポートが正しく開放されていません。画面左のActive欄のチェックを入れて、開放してください。

Active 欄にチェックを入れてもステータスが赤色🔴 又は黄色🟡 になっている場合は、アプリ側からポート開放の処理ができていません。開放するポートの番号を変更するか、ルーターやファイアウォールの設定等を確認してください。

サーバーのビルド

以上の作業が終了したら、サーバーを起動しましょう。
サーバーはSpigot サーバーのプレビルドと同様に、ターミナルでstart.commandを実行するか、start.commandファイルをダブルクリックして起動することができます。
コンソール上にDone!と表示されればサーバーの構築は完了です。マルチプレイを楽しみましょう。

注意

  • 何回もサーバーを構築していると、毎回サーバーラッパーのビルドを行うことが億劫になってきます。しかし、サーバーラッパーファイルの直接のダウンロードは、DMCAという法律に抵触する為禁止されています。毎回必ず自分でビルドを行いましょう。

  • サーバーを終了する際は、Minecraft サーバーのコンソール上で stop を実行して終了させましょう。⌘Q や終了ボタンを押しての終了は、サーバーデータが正常に保存されない可能性があります。

  • サーバーを起動していない際は、開放した Port は閉じておきましょう。常時の開放は、セキュリティ上の危険が伴います。

  • Minecraft サーバーの運営に当たっては、日々 Minecraft 公式や Spigot 等の更新情報を確認しておきましょう。稀に、セキュリティ上の脆弱性が報告されていることがあります(大規模なものだと、Log4j2 などがありました)。

終わりに

個人用として書いたものだったので、説明に至らない点があったかもしれませんがご了承ください。この文章を書き始めた当初は、私が Minecraft サーバーを構築した経験を、Linux (Debian)、Mac、Windows の全ての OS について一つの文章に記していたのですが、逆に読みにくくなってしまったので、OS ごとに別記事にすることにしました。今回は Mac 篇でしたが、また暫くしたら別 OS 篇もあげようと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?