11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker経由でMinecraft資源(Spigot)サーバーを立てる(2)

Last updated at Posted at 2020-11-03

どうせ創るのは豆腐ハウスだけどな!

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

関連記事:
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_ワールド名とすると。

  1. 通常ワールドにてネザーゲートのような形の構造物を作成(素材はなんでもいいが壊されにくい物で)
  2. 「/mvp wand」と入力し、木の斧を入手。
  3. 木の斧を装備してゲートの角にあたるブロックを左クリック
  4. 対角線上反対側のブロックを右クリック
  5. 「/mvp create gate_world」でポータルと認識される
  6. 資源ワールドに移動して1~4を実行
  7. 「/mvp create gate_asset p:gate_world」で通常ワールドと繋がったポータルと認識される
  8. 「/mvp select gate_world」と入力
  9. 「/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とすると

  1. 黒曜石と火打石と打ち金でネザーゲートを作る
  2. 「/mvnp link world asset」と入力
  3. ネザーゲートをくぐる(assetワールドに到着し自動的にネザーゲートができる)
  4. assetワールド側で「/mvnp link asset world」と入力しネザーゲートをくぐる

これで双方向に移動ができる

Multiverse-SignPortalsを使う方法(上級者向け)

上記、Multiverse-NetherPortalsを使う方法を書いたが、
最大の欠点がある。

それは、 ネザーに行けなくなる ことだ。

ワールドに設置したネザー(エンド)ゲートすべてが対象になるので、
設定を解除しない限りネザーに行けなくなってしまう。
それを解決するのが**Multiverse-SignPortals**
Multiverse-NetherPortalsと違って扱いが少し難しい

ここに看板を使ったmobの移動方法が書いてあるのだが、
滅茶苦茶わかりにくい(なんか英語も変だし)

以下のようにゲートっぽい枠と看板を設置その横にボタンを配置する
一緒にジャンプするワンちゃんもセット。

2021-01-19_22.46.44.png

ボタンを押すと

2021-01-19_22.47.09.png

めっちゃ雨降っとる( ゚Д゚;)

見づらいので帰りの看板を拡大してみると

2021-01-19_22.50.24.png

[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

ちなみに全ワールド(ディレクトリまるごと)そのまま移行してみたが、
問題なく動いてるようだ。

11
6
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
11
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?