はじめに
Minecraft用のサーバーソフトウェアには公式のBDS(Bedrock Dedicated Server)以外にもPMMPやCloudBurst MCのServerやNukkitがあります。
それぞれのメリット・デメリットとしては、
公式サーバー
- メリット
- Mobやレッドストーン回路がほぼ完璧に動く
公式なのでよくあるバグ技とかが使える
- デメリット
- プラグインが入らない←今回の問題
- Linuxはx64バイナリしか提供されてないのでARM系のラズパイとかでは動かない(強引に動かせるけど重い)
非公式サーバー
- メリット
- プラグインが入れ放題
- ランタイムがJavaの場合やソースコードが公開されている場合が多いのでARM系CPUでも動かせる場合が多い
- デメリット
- Mobがスポーンしない(プラグインで解決するけど)
別に非公式サーバーを使っても良いんですが、友達とマルチプレイでサバイバルする場合などちゃんとMobがスポーンしてくれる公式サーバーを自分は使っているんですが、例えばDiscordにゲーム内チャットを転送したり誰がゲームに参加したかなどを通知したい場合、公式サーバー単体では絶対無理なのでこの記事の方法でプラグインを導入できる環境を構築していきます
なぜBDSXを使わないのか
今回入れるLiteXLoader
の他に似たものとしてBDSX
というものがあります
BDSXもnode.jsとTypeScriptでプラグインを書くことができます
ですが、いざ自分でプラグインを書こうと思ったとき解説ページが見た感じGithubのWikiしか無く、そのWikiの解説も良く分からなくて(多分TS前提で書かれているのかな?)、ある程度ドキュメントがまとも(中国語だけど)なLiteXLoaderを選びました
注意
公式が推奨しているものではないのでデータのバックアップなどをしておいてください
ダウンロード
Minecraftサーバー本体 (Linuxサーバーで使う場合でもWindows版をダウンロードしてください)
LiteLoaderBDS (BDSサーバーのAPIを提供するもの)
LiteXLoader (LiteLoaderBDSからJavaScriptのAPIを提供するもの)
全て解凍して
MinecarftサーバーフォルダにLiteLoaderBDSのdllとかPluginsフォルダをコピーして、LiteXLoaderのdllやフォルダをそのPluginsフォルダにコピーしてください
設定
Linux使ってる方は先にこちらをお読みください
LiteLoaderBDSのSymDB2.exe
をダブルクリックで開いてください、しばらくしたあと勝手に処理が終わって閉じます。
サーバーのルートディレクトリにシンボルファイルが生成されていると思います
あとは普通にbedrock_server.exe
を起動すればPluginsフォルダのPluginが読み込まれてサーバーが起動します
試しにサーバーコンソールやゲーム内で/version
と打ってみて、BDSのバージョンやLiteLoaderBDSのGithubのURLが帰ってきたら正常に動いています!
おまけ
plugins\LiteXLoader\LangPack
の日本語翻訳した言語ファイルをここ置いときます
config.ini
で言語変えれると思います。
#linux
LiteLoaderBDSはdllインジェクションという技術を使ってAPIを提供しているのでLinuxでは使えません
ですが、Linux上でWindowsアプリを動かす有名なソフト、Wine
を使えば普通に動きます
Ubuntuだと
$ sudo dpkg --add-architecture i386
32bitアーキテクチャを有効にして
$ wget -nc https://dl.winehq.org/wine-builds/winehq.key
$ sudo apt-key add winehq.key
aptのレポジトリキーを追加
$ sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'
(ここのfocal
はubuntuバージョンによって変わります)
$ sudo apt update
おまじない
$ sudo apt install --install-recommends winehq-stable
インストール
$ wine --version
GOOD!
あとはwine SymDB2.exe
、wine bedrock_server.exe
すれば普通に動きます。
追記: Wine64ではdllのインポートエラーが出て使えなかったのでwineを使いましょう
追記の追記: このissusで
プラグインの作り方
これは時間があるときに詳しい記事を書こうかなと思ってます。
[追記]記事書きました
JSの知識が少しあればこの中国語のドキュメントを翻訳しながら読むと大体組めます