どうせ創るのは豆腐ハウスだけどな!
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
関連記事:
docker経由でMinecraft資源(Spigot)サーバーを立てる
------------------- ↓ 余談はここから ↓-------------------
Minecraftサーバーを建てて実際に運用してみると、
調整事項がいっぱいある。
通常ワールドの難易度、
資源サーバーの天候やモンスターの出現状態、
クリエイティブなら時間状態など。
複数人参加を考えるなら、
コマンド実行権限、行動範囲領域、
そのサーバーは採取可能にするのか、
荒し対策はするのかなどなど。
今回はインストール後の調整事項を列挙していこう。
------------------- ↓ 本題はここから ↓-------------------
複数ワールド
通常ワールド
configを変更していなければデフォルトの難易度はEASY。
好みの問題かもしれないが難易度はNORMALにしておきたい。
(hardモードって大して面白くない)
ネザーやエンドは設定が別になっているので、
併せて設定を変える。
設定項目 | 設定値 | 詳細 |
---|---|---|
difficulty | normal | まぁ、normalで |
$ docker exec -i mc rcon-cli
> mv modify set difficulty normal world
§aSuccess!§f Property §bdifficulty§f was set to §anormal
> mv modify set difficulty normal world_nether
§aSuccess!§f Property §bdifficulty§f was set to §anormal
> mv modify set difficulty normal world_the_end
§aSuccess!§f Property §bdifficulty§f was set to §anormal
資源サーバーの設置
資源サーバーは基本的にリセットするもの。
リセットすると取ったモノは元に戻り、造ったモノは消える。
となるとポータルとか苦労して造っても消えてしまう。
なんかいい方法はないかな。
(まだ答えは出てない)
(あ、ワープ専用のワールド作ればいいのか)
あと、竹とか雪、海など特定のバイオームがスポーン地帯から近い方がいいので、
シード値も設定しておきたい
設定内容は
設定項目 | 設定値 | 詳細 |
---|---|---|
weather | false | 天候は晴れのままにしたい |
monsters | false | モンスターは沸かない方がいい |
hunger | false | 空腹はなしの方向 |
doDaylightCycle | false | 時間は固定にしたい |
こんな感じかしら
$ docker exec -i mc rcon-cli
> mv create asset NORMAL -s 3116934447057457676
Starting creation of world 'asset'...
Complete!
> mv modify set weather false asset
§aSuccess!§f Property §bweather§f was set to §afalse
> mv modify set hunger false asset
§aSuccess!§f Property §bhunger§f was set to §afalse
> mv modify set monsters false asset
§aSuccess!§f Property §bmonsters§f was set to §afalse
> mvrule doDaylightCycle false asset
§aSuccess!§f Gamerule §bdoDaylightCycle§f was set to §afalse§f.
農場サーバーの設置
各種農場、トラップでアイテムを増殖させたいのだが、
通常ワールドにそれがあるとつまらないのと、
mobやエンティティが増えるとサーバーが重くなるので、
ワールドごと別にしたい。
そこでファームサーバーを用意する
(人がいなければ時間が止まるのでそこが悩みどころ)
制作はクリエイティブモードで運用はサバイバルモード。
設定内容は
設定項目 | 設定値 | 詳細 |
---|---|---|
gamemode | creative | クリエイティブモードにする |
difficulty | hard | 湧きモンスは多種多様の方がいい |
weather | false | 天候は晴れのままにしたい |
hunger | false | 空腹はなしの方向 |
doDaylightCycle | false | 時間は固定にしたい |
こんな感じかしら
$ docker exec -i mc rcon-cli
> mv create farm normal
> mv modify set gamemode creative farm
> mv modify set difficulty hard farm
> mv modify set weather false farm
> mv modify set hunger false farm
> mvrule doDaylightCycle false farm
実験サーバーの設置
サバイバルで設置する建物や回路を実験するためのサーバーが欲しい。
ローカルでやってもいいけど、
せっかくなので実験サーバーも用意する。
$ docker exec -i mc rcon-cli
> mv create test NORMAL -t FLAT
Starting creation of world 'test'...
Complete!
サーバーインポート
実験サーバーや農場サーバーは新規のワールドごとに作り直すのが面倒なので、
創ったサーバーのワールド情報をインポートする
$ cp -R ~/minecraft_data/old_world/test ~/minecraft_data/new_world/
$ docker exec -i mc rcon-cli
> mvimport test NORMAL
Starting import of world 'test '...
§aComplete!
行動範囲制限
ご存じの通り遠くに移動すればするほどサーバーのサイズが大きくなる。
これを使って荒らすやつとかもいるようで。
(よー知らんけど)
それはさておき、
無駄にサイズがでかくなるとか、
重くなるとかは避けたいので、
範囲制限だけ付けて様子を見ておく。
以前はプラグインで設置していたようだが、
今は標準コマンドがあるらしい。
$ docker exec -i mc rcon-cli
> lp user Dozo permission set minecraft.command.* true
マイクラ上で以下のコマンドを実行。
とりあえず1万ブロックにしとくか
/worldborder set 10000
どのくらいが妥当なのかよーわからん (・ω・)
ワールドポータル作成
ワールド間の移動はデフォルトではコマンド入力。
ユーザーがログイン状態の時にコマンドを入力することで行き来できる。
ただ、ユーザー側にコマンド権限を与えるか、
サーバー管理者が都度入力するのは現実的ではないので、
権限を渡さずにユーザーに移動を任せたい。
そんな時に使うのが Multiverse-Portals
権限を持っているユーザーが実際にMinecraft上でネザーゲートのような構造物を建築。
特定のアイテム(デフォルトでは木の斧)でポータルを設定する。
前提としてポータルを作成するユーザーにMultiverse-Portalsの権限を付与しておく
$ docker exec -i mc rcon-cli
> lp user Dozo permission set multiverse.* true
資源ワールドをasset, 通常ワールドをworld、ゲートをそれぞれgate_ワールド名とすると。
- 通常ワールドにてネザーゲートのような形の構造物を作成(素材はなんでもいいが壊されにくい物で)
- 「/mvp wand」と入力し、木の斧を入手。
- 木の斧を装備してゲートの角にあたるブロックを左クリック
- 対角線上反対側のブロックを右クリック
- 「/mvp create gate_world」でポータルと認識される
- 資源ワールドに移動して1~4を実行
- 「/mvp create gate_asset p:gate_world」で通常ワールドと繋がったポータルと認識される
- 「/mvp select gate_world」と入力
- 「/mvp modify dest p:gate_world」と入力
(なるほど。わからん。 (・ω・))
行き先は必ずしもゲートにする必要はなく、
ワールド指定すればスポーン地点に移動するし、
座標を指定することもできるようだ。
ワールドを経由すればファストトラベル(ショートカット)も作れそうだな。
やっぱりマリオの土管風に造る感じだろうか。
権限を持っているユーザーは木の斧で木を切れなくなるので注意
権限が外れると使えるようになる。
クリエイティブモードだとブロックを破壊するので、
サバイバルモードに切り替えておく。
(スペクテイターモードとかの方がいいのかな?)
参考:
https://w.atwiki.jp/minecraftdevip/pages/31.html
ワールド間移動時のインベントリ維持
ワールド移動すると気がつくが、
手持ちの荷物がリセットされている。
これはポータル越しに移動してもそうなっている。
荷物を保持して行き来できなければ資源サーバの意味がない。
そんな時に使うのが Multiverse-Inventories
手持ちの荷物を保持したまま行き来することができる
プラグインを設置した段階で、
defaultという名称の設定がされていてるので、
追加のサーバーも加えておく。
> mvinv addworld asset default
※一度ワールドに行ってから設定した方がいい
ワールド間のmob移動
Multiverse-NetherPortalsを使う方法(初心者向け)
資源サーバーはモブの移動ができないという思い込みがまかり通っているが、
正確にはmvtpで移動できないというだけのこと。
Multiverse-Portalはmvtpのインタフェースなだけなので友好的Mobや敵対的Mobは移動できないが、
別の方法であれば移動できる
そんな時に使うのが Multiverse-NetherPortals
これはワールド間の移動をネザーゲートを使って移動するものだが、
通常のネザーゲートと同等の機能を持っている。
友好的にした狼をゲートにくぐらせたり、
中立的mobをリードで引き連れたりもできる。
敵対的mobが勝手にゲートをくぐってくることも普通にあるので注意。
作り方は**Multiverse-Portals**よりも簡単
資源ワールドをasset, 通常ワールドをworldとすると
- 黒曜石と火打石と打ち金でネザーゲートを作る
- 「/mvnp link world asset」と入力
- ネザーゲートをくぐる(assetワールドに到着し自動的にネザーゲートができる)
- assetワールド側で「/mvnp link asset world」と入力しネザーゲートをくぐる
これで双方向に移動ができる
Multiverse-SignPortalsを使う方法(上級者向け)
上記、Multiverse-NetherPortalsを使う方法を書いたが、
最大の欠点がある。
それは、 ネザーに行けなくなる ことだ。
ワールドに設置したネザー(エンド)ゲートすべてが対象になるので、
設定を解除しない限りネザーに行けなくなってしまう。
それを解決するのが**Multiverse-SignPortals**
Multiverse-NetherPortalsと違って扱いが少し難しい
ここに看板を使ったmobの移動方法が書いてあるのだが、
滅茶苦茶わかりにくい(なんか英語も変だし)
以下のようにゲートっぽい枠と看板を設置その横にボタンを配置する
一緒にジャンプするワンちゃんもセット。
ボタンを押すと
めっちゃ雨降っとる( ゚Д゚;)
見づらいので帰りの看板を拡大してみると
[ALL:5:DOWN]
[mv]
world
と記述してある。
一行目は対象mob:範囲ブロック数:方角
二行目はmvで固定
三行目は目的のワールド名である
ゲートみたいな枠は別に必要なく(わかりやすくしたのと試行錯誤した結果なだけ)
看板があり、レッドストーン信号(ボタンやスイッチなど)が受けられる位置にあればよい。
------------------- ↓ 後書はここから ↓-------------------
Paperサーバー
今回使用したdocker image(itzg/minecraft-server, 多分公式)では利用できるサーバーを選択できる
それぞれどのような特性があるのかよく知らない。
今回使用したのはサーバーはSpigotだが、
これの派生で軽量化されたPaperに切り替えた。
一応Bukkit/SpigotのMod、プラグイン類はそのまま適用できるみたい。
$ docker run -d -v ~/minecraft_data:/data -p 25565:25565 -e TYPE=PAPER -e EULA=TRUE -e MAX_WORLD_SIZE=10000 -e DIFFICULTY=normal --name mcp itzg/minecraft-server
ちなみに全ワールド(ディレクトリまるごと)そのまま移行してみたが、
問題なく動いてるようだ。