WSL2の真骨頂
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 余談はここから ↓-------------------
Minecraft触るのは何年ぶりだろう。
(ボートがぶつかるとすぐ壊れてた頃)
創った建築物をクリーパーに破壊されて辞めたのは覚えてる。
久々に触ってみようということになり、
どうせなら複数サーバーでサーバー間移動できるようにしておきたいと、
Minecraftサーバーを立てる遊びを始める
(なにやってんねん (・ω・) )
折角WSL2が入ってるし、
Linux上にインストールしてみよう。
ビルドがいるらしいからdocker使おう。
MODも使えるようにしよう。
サーバーも複数立てれるようにしよう。
と仕様が欲張りになり、
時間だけが過ぎていくことに。
なんとか形になったからここに残す。
------------------- ↓ 本題はここから ↓-------------------
事前準備
Minecraftをインストールするのは当然。
Java Edition(Windows版)でいいと思う。
(無料じゃないよ!)
WSL2とUbuntu、dockerが入ってるのが前提
この辺でも見て入れといて。
WSL2+docker+PHPのWindows開発環境構築(1) WSL2編
WSL2+docker+PHPのWindows開発環境構築(2) docker編
PowerShellから以下のようにコマンドが通れば成功
PS C:\> wsl -d Ubuntu-20.04
$ docker --version
Docker version 19.03.13, build 4484c46d9d
データ保存用にディレクトリを切っておく
$ mkdir ~/minecraft_data
dockerからコンテナ生成
SpigotというサーバーMODがあるそうな。
(よくわかってない)
spigotのdockerは別のが見つかるが、
よく使われる方にパラメータだけで設定できそうだからこちらを採用
$ docker run -d -v ~/minecraft_data:/data -p 25565:25565 -e TYPE=SPIGOT -e EULA=TRUE --name mc itzg/minecraft-server
# プラグイン指定 -e MODS=http://hogehoge.com/plugin01.jar,http://hogehoge.com/plugin02.jar
# シード値指定 -e SEED=7314490960418706833
起動はすぐだけど、
追加のダウンロードとかバイオーム生成とか諸々かかるので、
3分ぐらい待つ
( ˘ω˘ )スヤァ…
起動確認
Minecraftを起動してMultiplayerから「Direct Connection」で接続を試す。
接続を確認してみる。
よしログインでけた (`・ω・´)キリッ
別ワールド生成
プラグイン追加
プラグインに関する詳細説明は後書きにするとして、
ここでは必要な分だけ書いておこう。
$ docker stop mc
$ cd ~/minecraft_data/plugins
$ wget http://ci.onarandombox.com/job/Multiverse-Core/Release%20Build/artifact/target/Multiverse-Core-4.2.2.jar # マルチワールド管理
$ wget http://ci.onarandombox.com/job/Multiverse-Portals/Release%20Build/artifact/target/Multiverse-Portals-4.2.0.jar # ワールド間移動
$ wget https://ci.lucko.me/job/LuckPerms/lastStableBuild/artifact/bukkit/build/libs/LuckPerms-Bukkit-5.1.107.jar # プラグイン権限管理
$ docker start mc
( ˘ω˘ )スヤァ…
( ゚д゚)ハッ!
プラグイン権限調整
ユーザー名をDozoとすると
$ docker exec -i mc rcon-cli
> lp user Dozo permission set luckperms.* true
> lp user Dozo permission set minecraft.command.* true
> lp user Dozo permission set multiverse.* true
> ^C (ctrl+c)
コンソールからは無反応だがユーザー名さえ間違ってなければこれでよい
マイクラにログインして以下のコマンドを実行
/gamerule doDaylightCycle false
実行できていれば成功
これは時間停止コマンドで作業中に夜が来てゾンビにやられることを防げる
ワールド生成
すべての準備ができたのでワールド生成といこう。
rcon-cli上でも生成はできるが、
実感が薄いのでマイクラ上で行う
/mv create asset NORMAL
Starting creation of world 'asset'...
Complete!
これでassetという名称の新しいワールドが生成された
移動は以下のコマンド
/mvtp asset
試しにネザーを創って移動してみると
よし!成功だ! (`・ω・´)キリッ
とりあえず形にはなったので、
あとは細かい設定だけだな。
docker経由でMinecraft資源(Spigot)サーバーを立てる(2)
------------------- ↓ 後書はここから ↓-------------------
プラグイン設定
保存用ディレクトリにpluginsというのがあるが、
ここにビルド済みのプラグインファイル(jar)を置くことで、
プラグインを追加することができる
記事の頭の方にちょろっとあったデータ保存用ディレクトリがここで利いてくる。
cloneしてmavenでビルドという流れだが、
ビルド済みなものを直接使う方が簡単でいい。
書くプラグイン製作者はJenkinsを公開しているようで、
そちらから拝借しよう。
その際、最新のビルドではなく安定のビルドから取得
マルチワールド
Multiverse
Multiverse was created at the dawn of Bukkit multiworld support. It has since then grown into a complete world management solution including special treatment of your nether worlds with Multiverse NetherPortals.
In the second delivery of Multiverse, we've broken it up into several smaller plugins that are each feature packed but not bloated! Multiverse provides the easiest to use world management solution for your Minecraft server, big or small, and with great addons like Portals and NetherPortals, what's not to love!
Multiverse is here and works for the latest server build! Is your server a Multiverse?
https://dev.bukkit.org/projects/multiverse-core/
複数のサーバーを管理するプラグイン。ワールドの作成、再生成、サーバー間の移動など複数サーバーによるメリットを享受することができる。
各種プラグインは
名称 | 詳細 | Jenkins URL |
---|---|---|
Multiverse-core | マルチサーバーのコアシステム | http://ci.onarandombox.com/view/Multiverse/job/Multiverse-Core/ |
Multiverse-Portals | サーバー間移動のポータルを構築 | http://ci.onarandombox.com/view/Multiverse/job/Multiverse-Portals/ |
Multiverse-NetherPortals | ネザーゲートを使ったサーバー間移動 | http://ci.onarandombox.com/view/Multiverse/job/Multiverse-NetherPortals/ |
Multiverse-SignPortals | 看板を使ったサーバー間移動 | http://ci.onarandombox.com/view/Multiverse/job/Multiverse-SignPortals/ |
Multiverse-Inventories | サーバー間のインベントリ管理 | http://ci.onarandombox.com/view/Multiverse/job/Multiverse-Inventories/ |
どうせなら全部入れとくか。
$ cd ~/minecraft_data/plugins
$ wget http://ci.onarandombox.com/job/Multiverse-Core/Release%20Build/artifact/target/Multiverse-Core-4.2.2.jar
$ wget http://ci.onarandombox.com/job/Multiverse-Portals/Release%20Build/artifact/target/Multiverse-Portals-4.2.0.jar
$ wget http://ci.onarandombox.com/job/Multiverse-NetherPortals/Release%20Build/artifact/target/Multiverse-NetherPortals-4.2.1.jar
$ wget http://ci.onarandombox.com/job/Multiverse-Inventories/Release%20Build/artifact/target/Multiverse-Inventories-4.2.1.jar
ワールド生成のパラメータはこちら
https://github.com/Multiverse/Multiverse-Core/wiki/World-properties
コマンドはマイクラ上かRCON上で。
$ docker exec -i mc rcon-cli
> mvlist
§d====[ Multiverse World List ]====
§fworld§f§f - §aNORMAL
§fworld_the_end§f§f - §bTHE_END
§fworld_nether§f§f - §cNETHER
> mv create asset NORMAL
Starting creation of world 'asset'...
Complete!
> mv modify set weather false asset
§aSuccess!§f Property §bweather§f was set to §afalse
> mvrule doDaylightCycle false asset
§aSuccess!§f Gamerule §bdoDaylightCycle§f was set to §afalse§f.
> mv modify add creeper monsters asset
§aSuccess! §bcreeper§f was §cremoved from §amonsters
> mv create farm NORMAL -t FLAT
Starting creation of world 'farm'...
Complete!
> mv modify set gamemode creative farm
§aSuccess!§f Property §bgamemode§f was set to §acreative
> mv modify set difficulty hard farm
§aSuccess!§f Property §bdifficulty§f was set to §ahard
> mv modify set hunger false farm
§aSuccess!§f Property §bhunger§f was set to §afalse
サーバー管理
LuckPerms
LuckPerms is a permissions plugin for Minecraft servers. It allows server admins to control what features players can use by creating groups and assigning permissions.
https://luckperms.net
サーバーの権限などを管理するプラグイン
名称 | 詳細 | Jenkins URL |
---|---|---|
LuckPerms | https://ci.lucko.me/job/LuckPerms/ |
$ cd ~/minecraft_data/plugins
$ wget https://ci.lucko.me/job/LuckPerms/lastStableBuild/artifact/bukkit/build/libs/LuckPerms-Bukkit-5.1.107.jar
LuckPermsプラグインはデフォルトで管理ユーザーを設定していないので、
再起動後、minecraftコンソールにアクセスしてユーザー登録をする。
ユーザー名をDozoとすると
$ docker restart mc
$ docker exec -i mc rcon-cli
> lp user Dozo permission set luckperms.* true
ctrl+C
バグなのかわからないが入力しても反応はないが、
ちゃんと機能はしている。
動作確認をするためクライアントで接続する
/lp editor
記載のURLをクリックしてアクセスするとパーミッション変更のWeb UIに移動するので、
各種設定を行うことができる。
とりあえずこのぐらい設定して微調整という感じで。
グループ名 | 権限 |
---|---|
Admin | minecraft.command.ban minecraft.command.pardon some.cool.admin.perm someplugin.vanish |
Mod | minecraft.command.mute minecraft.command.unmute some.cool.mod.perm chatcolor.bold |
Default | minecraft.command.say minecraft.command.me |
参考:
Using WSL2 in a Docker Linux container on Windows to run a Minecraft Java Edition