Paper 1.20.2にVisualModderのプラグインを導入して自宅にプログラミング環境を構築する
目次
概要
最近自分も含めて家族がMinecraftで遊んでいますが、プログラミングできることが分かり少しずつ勉強(というほどではないですが)しています。 フリーのサーバに接続することでプログラミング結果を試すことができるのですが、ワールドが開拓され尽くしているというか他人のオブジェだらけというか やってて落ち着かないので、自宅に家族限定のMinecraft Serverを立てることにしました。
Minecraft Java Edition Serverは先日家庭内で稼働を始めて利用しているのですが、公式のサーバではプログラミングに必要なプラグインを 導入することができないようなので、新たにPaperという派生のMinecraft Serverを導入してそこにプラグインを導入することにしました。 プログラミングに使うプラグインは VisualModderという名前です。
PaperとVisualModderを導入する機器はRadxa社製のシングルボードコンピュータであるROCK 5Aを使用しています。 OSはRadxa社公式OSイメージのUbuntu 22.04.3 LTSをインストールしています。
なお、プラグインの導入以外の手順は公式のMinecraft Server導入手順と全くと言っていいほど同じで、 OpenJDKのインストールやSystemdでJVMの起動を管理する手順は、 Minecraft Java Edition Server 1.20.2をROCK 5AのUbuntu 22.04.3 LTSで稼働させるの方を参照してください。
構成
サーバ構成
ハードウェア
ハードウェアはROCK 5Aのメモリ16GBモデルを使用しました。ハードウェアスペックは以下のとおりです。 PoE HatはRaspberry Pi 4B用のものを流用しています。
電源はPoEで供給。モニタとキーボード、マウスは接続しておらず、Windows PCからSSHして設定しました。
項目 | 内容 |
---|---|
SoC | Rockchip RK3588S |
CPU | 4x Cortex-A76 4x Cortex-A55 |
GPU | Mali G610 MC4 ※レビューサイト情報 |
メモリ | 64bit 3200Mb/s LPDDR4 16GB |
有線ネットワーク | 2.5 GbE LAN with Power over Ethernet (PoE) |
ストレージ | eMMC 64GB |
OS
Ubuntu 22.04.3 LTS arm64 ※ROCK 5公式イメージ
ソフトウェア・パッケージ
- paper-1.20.2-318.jar
- visualmodder-1.19-20220930_1222_obf.jar
環境構築
インストール
Paperをインストールするディレクトリの作成
Paperは /opt ディレクトリ配下にインストールすることにします。 インストール先のディレクトリ名称は paper-1.20.2 とします。 今後異なるバージョンのPaperをインストールした際にもメインで起動したいバージョンは同じパスで起動できるように、 バージョン番号を抜いたシンボリックリンク paper を作成しておき、通常はシンボリックリンクの方をパスとして使用します。
rock@rock-5a:~$ cd /opt/ rock@rock-5a:/opt$ ls -l total 108932 drwxr-xr-x 2 radxa radxa 4096 Mar 12 2021 Geekbench-5.4.0-LinuxARMPreview -rw-r--r-- 1 root root 111530759 Mar 12 2021 Geekbench-5.4.0-LinuxARMPreview.tar.gz drwxrwxr-x 6 rock rock 4096 Dec 12 23:43 minecraft-server-1.20.2-java drwxrwxr-x 6 rock rock 4096 Dec 10 02:27 minecraft-server-1.20.2-java.bk lrwxrwxrwx 1 root root 30 Dec 9 15:06 minecraft-server-java -> ./minecraft-server-1.20.2-java rock@rock-5a:/opt$ sudo mkdir paper-1.20.2 ←ディレクトリの作成 rock@rock-5a:/opt$ sudo ln -s paper-1.20.2 paper ←シンボリックリンクの作成 rock@rock-5a:/opt$ ls -l total 108936 drwxr-xr-x 2 radxa radxa 4096 Mar 12 2021 Geekbench-5.4.0-LinuxARMPreview -rw-r--r-- 1 root root 111530759 Mar 12 2021 Geekbench-5.4.0-LinuxARMPreview.tar.gz drwxrwxr-x 6 rock rock 4096 Dec 12 23:43 minecraft-server-1.20.2-java drwxrwxr-x 6 rock rock 4096 Dec 10 02:27 minecraft-server-1.20.2-java.bk lrwxrwxrwx 1 root root 30 Dec 9 15:06 minecraft-server-java -> ./minecraft-server-1.20.2-java lrwxrwxrwx 1 root root 12 Dec 13 01:39 paper -> paper-1.20.2 ←作成したシンボリックリンク drwxr-xr-x 2 root root 4096 Dec 13 01:39 paper-1.20.2 ←作成したディレクトリ rock@rock-5a:/opt$ sudo chown rock:rock paper-1.20.2 ←所有ユーザ・グループの変更 rock@rock-5a:/opt$ ls -l total 108936 drwxr-xr-x 2 radxa radxa 4096 Mar 12 2021 Geekbench-5.4.0-LinuxARMPreview -rw-r--r-- 1 root root 111530759 Mar 12 2021 Geekbench-5.4.0-LinuxARMPreview.tar.gz drwxrwxr-x 6 rock rock 4096 Dec 12 23:43 minecraft-server-1.20.2-java drwxrwxr-x 6 rock rock 4096 Dec 10 02:27 minecraft-server-1.20.2-java.bk lrwxrwxrwx 1 root root 30 Dec 9 15:06 minecraft-server-java -> ./minecraft-server-1.20.2-java lrwxrwxrwx 1 root root 12 Dec 13 01:39 paper -> paper-1.20.2 drwxr-xr-x 2 rock rock 4096 Dec 13 01:39 paper-1.20.2 ←所有ユーザ・グループが変更された
Paperのjarファイルのダウンロード
Paperの本体のjarファイルをダウンロードします。ダウンロード元はPaperMCのサイトです。
rock@rock-5a:/opt$ cd paper/ rock@rock-5a:/opt/paper$ wget https://api.papermc.io/v2/projects/paper/versions/1.20.2/builds/318/downloads/paper-1.20.2-318.jar --2023-12-13 01:43:04-- https://api.papermc.io/v2/projects/paper/versions/1.20.2/builds/318/downloads/paper-1.20.2-318.jar Resolving api.papermc.io (api.papermc.io)... 172.67.72.198, 104.26.13.138, 104.26.12.138, ... Connecting to api.papermc.io (api.papermc.io)|172.67.72.198|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 41741453 (40M) [application/java-archive] Saving to: ‘paper-1.20.2-318.jar’ paper-1.20.2-318.jar 100%[=================================================>] 39.81M 11.7MB/s in 3.9s 2023-12-13 01:43:08 (10.2 MB/s) - ‘paper-1.20.2-318.jar’ saved [41741453/41741453] rock@rock-5a:/opt/paper$ ls -l total 40764 -rw-rw-r-- 1 rock rock 41741453 Dec 3 12:47 paper-1.20.2-318.jar
設定
Paperの各種設定ファイル生成のためにPaperを起動
Paperを起動すると各種ディレクトリやファイルが自動生成されるので、起動します。 なお、初回は必ず起動に失敗します。EULA(End-User License Agreement)に同意していないためです。
rock@rock-5a:/opt/paper$ java -Xms2G -Xmx2G -jar paper-1.20.2-318.jar --nogui Downloading mojang_1.20.2.jar Applying patches Starting org.bukkit.craftbukkit.Main System Info: Java 17 (OpenJDK 64-Bit Server VM 17.0.9+9-Ubuntu-122.04) Host: Linux 5.10.110-21-rockchip (aarch64) Loading libraries, please wait... [01:46:42 WARN]: Failed to load eula.txt [01:46:42 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
EULA(End-User License Agreement)への同意
一つ前の手順でPaperを起動したことで各種ファイルが生成されています。 その中に eura.txt がありますので、エディタで開いて false(不同意) を true(同意) に変更します。 これで次回以降はPaperを起動できるようになります。
rock@rock-5a:/opt/paper$ ls -l
total 40792
drwxrwxr-x 2 rock rock 4096 Dec 13 01:46 cache
-rw-rw-r-- 1 rock rock 158 Dec 13 01:46 eula.txt ←このファイルを編集する
drwxrwxr-x 11 rock rock 4096 Dec 13 01:46 libraries
drwxrwxr-x 2 rock rock 4096 Dec 13 01:46 logs
-rw-rw-r-- 1 rock rock 41741453 Dec 3 12:47 paper-1.20.2-318.jar
drwxrwxr-x 2 rock rock 4096 Dec 13 01:46 plugins
-rw-rw-r-- 1 rock rock 1297 Dec 13 01:46 server.properties
drwxrwxr-x 3 rock rock 4096 Dec 13 01:46 versions
rock@rock-5a:/opt/paper$ vi eula.txt
※以下、該当箇所のみ変更※ #By changing the setting below to TRUE you are indicating your agreement to our EULA (https://aka.ms/MinecraftEULA). #Wed Dec 13 01:46:42 JST 2023 eula=true ←初期状態はfalseとなっているのでtrueに変更する
Paperの起動・接続・停止確認
PaperはjavaコマンドでJVMを起動します。 PaperMCのサイトでは起動コマンド例としてヒープサイズ最小値、最大値に2Gを指定していたので、 これをベースとして利用して、不足するようであれば変更を考えることにします。
以下のようにjavaコマンドで起動するとフォアグラウンドで動き続けます。 ユーザがPaperに接続したり切断したりするとその都度メッセージが表示されます。 Paperを停止したいときは stop と入力すると停止します。
rock@rock-5a:/opt/paper$ java -Xms2G -Xmx2G -jar paper-1.20.2-318.jar --nogui Starting org.bukkit.craftbukkit.Main System Info: Java 17 (OpenJDK 64-Bit Server VM 17.0.9+9-Ubuntu-122.04) Host: Linux 5.10.110-21-rockchip (aarch64) Loading libraries, please wait... [02:00:35 INFO]: Environment: Environment[accountsHost=https://api.mojang.com, sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] [02:00:35 INFO]: Found new data pack file/bukkit, loading it automatically [02:00:37 INFO]: Loaded 1174 recipes [02:00:37 INFO]: Loaded 1271 advancements [02:00:37 INFO]: Starting minecraft server version 1.20.2 [02:00:37 INFO]: Loading properties [02:00:38 INFO]: This server is running Paper version git-Paper-318 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT) (Git: 9271ee7) [02:00:38 INFO]: Server Ping Player Sample Count: 12 [02:00:38 INFO]: Using 4 threads for Netty based IO [02:00:39 WARN]: [!] The timings profiler has been enabled but has been scheduled for removal from Paper in the future. We recommend installing the spark profiler as a replacement: https://spark.lucko.me/ For more information please visit: https://github.com/PaperMC/Paper/issues/8948 [02:00:39 INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 2 worker threads, and gen parallelism of 2 threads [02:00:39 INFO]: Default game type: CREATIVE [02:00:39 INFO]: Generating keypair [02:00:39 INFO]: Starting Minecraft server on *:25566 [02:00:39 INFO]: Using epoll channel type [02:00:39 INFO]: Paper: Using libdeflate (Linux aarch64) compression from Velocity. [02:00:39 INFO]: Paper: Using OpenSSL (Linux aarch64) cipher from Velocity. [02:00:39 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE! [02:00:39 WARN]: The server will make no attempt to authenticate usernames. Beware. [02:00:39 WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose. [02:00:39 WARN]: To change this, set "online-mode" to "true" in the server.properties file. [02:00:39 INFO]: Preparing level "paper-creative" [02:00:49 INFO]: Preparing start region for dimension minecraft:overworld [02:00:49 INFO]: Time elapsed: 167 ms [02:00:49 INFO]: Preparing start region for dimension minecraft:the_nether [02:00:50 INFO]: Time elapsed: 65 ms [02:00:50 INFO]: Preparing start region for dimension minecraft:the_end [02:00:50 INFO]: Time elapsed: 57 ms [02:00:50 INFO]: Running delayed init tasks [02:00:50 INFO]: Done (12.187s)! For help, type "help" ←ここまでが起動メッセージ [02:00:50 INFO]: Timings Reset [02:03:12 INFO]: UUID of player hogehoge is abcdefgh-ijkl-mnop-qrst-uvwxyz123456 ←ユーザがMinecraftで当サーバに接続すると表示される [02:03:13 INFO]: hogehoge joined the game [02:03:13 INFO]: hogehoge[/192.168.0.101:52002] logged in with entity id 387 at ([paper-creative]12.5, 63.0, -10.5) [02:03:23 INFO]: hogehoge lost connection: Disconnected [02:03:24 INFO]: hogehoge left the game ←ユーザがMinecraftでサーバから切断されると表示される > stop ←stop と入力するとPaperが停止する [02:03:35 INFO]: Stopping the server [02:03:35 INFO]: Stopping server [02:03:35 INFO]: Saving players [02:03:35 INFO]: Saving worlds [02:03:35 INFO]: Saving chunks for level 'ServerLevel[paper-creative]'/minecraft:overworld [02:03:35 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative' [02:03:35 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative' [02:03:35 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative' [02:03:38 INFO]: [ChunkHolderManager] Saved 2162 block chunks, 625 entity chunks, 3 poi chunks in world 'paper-creative' in 2.14s [02:03:38 INFO]: ThreadedAnvilChunkStorage (paper-creative): All chunks are saved [02:03:38 INFO]: Saving chunks for level 'ServerLevel[paper-creative_nether]'/minecraft:the_nether [02:03:38 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative_nether' [02:03:38 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative_nether' [02:03:38 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative_nether' [02:03:39 INFO]: [ChunkHolderManager] Saved 2025 block chunks, 529 entity chunks, 0 poi chunks in world 'paper-creative_nether' in 1.13s [02:03:39 INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [02:03:39 INFO]: Saving chunks for level 'ServerLevel[paper-creative_the_end]'/minecraft:the_end [02:03:39 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative_the_end' [02:03:39 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative_the_end' [02:03:39 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative_the_end' [02:03:39 INFO]: [ChunkHolderManager] Saved 2025 block chunks, 529 entity chunks, 0 poi chunks in world 'paper-creative_the_end' in 0.58s [02:03:40 INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved > 2023-12-13 02:03:40,116 Log4j2-AsyncAppenderEventDispatcher-1-Async WARN Advanced terminal features are not available in this environment [02:03:40 INFO]: ThreadedAnvilChunkStorage: All dimensions are saved [02:03:40 INFO]: Flushing Chunk IO [02:03:40 INFO]: Closing Thread Pool [02:03:40 INFO]: Closing Server
VisualModderプラグインのダウンロード
PaperがMinecraftサーバとして起動することが確認できたので、 続いて目的のVisualModderプラグインの導入を行います。 まずはファイルをダウンロードします。 VisualModderのプラグインはjarファイルとして提供されており、Paperの plugins ディレクトリ内に配置します。 wgetでファイルをダウンロードします。
rock@rock-5a:/opt/paper$ cd plugins/ rock@rock-5a:/opt/paper/plugins$ ls -l total 4 drwxrwxr-x 2 rock rock 4096 Dec 13 01:50 bStats rock@rock-5a:/opt/paper/plugins$ wget https://visualmodder.org/downloads/visualmodder-1.19-20220930_1222_obf.jar --2023-12-13 02:05:02-- https://visualmodder.org/downloads/visualmodder-1.19-20220930_1222_obf.jar Resolving visualmodder.org (visualmodder.org)... 157.90.97.105 Connecting to visualmodder.org (visualmodder.org)|157.90.97.105|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 7636439 (7.3M) [application/java-archive] Saving to: ‘visualmodder-1.19-20220930_1222_obf.jar’ visualmodder-1.19-20220930_12 100%[=================================================>] 7.28M 16.8KB/s in 6m 52s 2023-12-13 02:11:57 (18.1 KB/s) - ‘visualmodder-1.19-20220930_1222_obf.jar’ saved [7636439/7636439] rock@rock-5a:/opt/paper/plugins$
VisualModderの各種設定ファイル生成のためにPaperを起動
Paper本体と同様にVisualModderプラグインも一度起動を行うと各種設定ファイルが自動生成されます。 一度Paperを起動してすぐに停止します。
rock@rock-5a:/opt/paper/plugins$ cd .. rock@rock-5a:/opt/paper$ java -Xms2G -Xmx2G -jar paper-1.20.2-318.jar --nogui Starting org.bukkit.craftbukkit.Main System Info: Java 17 (OpenJDK 64-Bit Server VM 17.0.9+9-Ubuntu-122.04) Host: Linux 5.10.110-21-rockchip (aarch64) Loading libraries, please wait... [02:14:01 INFO]: Environment: Environment[accountsHost=https://api.mojang.com, sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] [02:14:04 INFO]: Loaded 1174 recipes [02:14:04 INFO]: Loaded 1271 advancements [02:14:04 INFO]: Starting minecraft server version 1.20.2 [02:14:04 INFO]: Loading properties [02:14:04 INFO]: This server is running Paper version git-Paper-318 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT) (Git: 9271ee7) [02:14:05 INFO]: Server Ping Player Sample Count: 12 [02:14:05 INFO]: Using 4 threads for Netty based IO [02:14:05 WARN]: [!] The timings profiler has been enabled but has been scheduled for removal from Paper in the future. We recommend installing the spark profiler as a replacement: https://spark.lucko.me/ For more information please visit: https://github.com/PaperMC/Paper/issues/8948 [02:14:05 INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 2 worker threads, and gen parallelism of 2 threads [02:14:06 INFO]: Default game type: CREATIVE [02:14:06 INFO]: Generating keypair [02:14:06 INFO]: Starting Minecraft server on *:25566 [02:14:06 INFO]: Using epoll channel type [02:14:06 INFO]: Paper: Using libdeflate (Linux aarch64) compression from Velocity. [02:14:06 INFO]: Paper: Using OpenSSL (Linux aarch64) cipher from Velocity. [02:14:06 INFO]: [visualmodder] Loading server plugin visualmodder v2.0 [02:14:06 INFO]: Server permissions file permissions.yml is empty, ignoring it [02:14:06 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE! [02:14:06 WARN]: The server will make no attempt to authenticate usernames. Beware. [02:14:06 WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose. [02:14:06 WARN]: To change this, set "online-mode" to "true" in the server.properties file. [02:14:06 INFO]: Preparing level "paper-creative" [02:14:07 INFO]: Preparing start region for dimension minecraft:overworld [02:14:07 INFO]: Time elapsed: 480 ms [02:14:07 INFO]: Preparing start region for dimension minecraft:the_nether [02:14:08 INFO]: Time elapsed: 148 ms [02:14:08 INFO]: Preparing start region for dimension minecraft:the_end [02:14:08 INFO]: Time elapsed: 55 ms [02:14:08 INFO]: [visualmodder] Enabling visualmodder v2.0 [02:14:08 INFO]: [org.lauro.blocklyMc.VisualModderPlugin] Enabling visualmodder plugin [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] --------------------------- Visualmodder V2.0 --------------------------- [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Parameter file exists=false [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Listening to address http://149.202.70.191 [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Listening to port 10273 [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Using advanced permissions false [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Using mojang name validation true [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Loaded MAX_ALLOWED_ENTITIES_PER_PLAYER with values 30, 30, 30 [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Loaded MAX_EXECUTION_TIME_MILLISECS with values 25000, 25000, 25000 [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Loaded MAX_BLOCK_CREATION_DISTANCE with values 50, 50, 50 [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Server mode is = NORMAL [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] Missing Game commands. Did you set the parameter GAME_COMMANDS? [02:14:08 INFO]: [org.lauro.blocklyMc.c.c] LOGGING_LEVEL = INFO [02:14:08 INFO]: [org.lauro.blocklyMc.f.c] Starting webserver at http://<minecraft Address>:10273 [02:14:08 INFO]: [org.lauro.blocklyMc.e.c] --- Enabling Visualmodder plugin --- [02:14:08 INFO]: Running delayed init tasks [02:14:08 INFO]: Done (4.037s)! For help, type "help" [02:14:08 INFO]: Timings Reset > stop [02:14:37 INFO]: Stopping the server [02:14:37 INFO]: Stopping server [02:14:37 INFO]: [visualmodder] Disabling visualmodder v2.0 [02:14:37 INFO]: [org.lauro.blocklyMc.e.c] --- Disabling Visualmodder plugin --- [02:14:37 INFO]: [org.lauro.blocklyMc.f.c] Stopping webserver at http://<minecraft Address>:10273 is now closed [02:14:37 INFO]: Saving players [02:14:37 INFO]: Saving worlds [02:14:37 INFO]: Saving chunks for level 'ServerLevel[paper-creative]'/minecraft:overworld [02:14:37 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative' [02:14:37 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative' [02:14:37 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative' [02:14:38 INFO]: [ChunkHolderManager] Saved 529 block chunks, 529 entity chunks, 0 poi chunks in world 'paper-creative' in 1.27s [02:14:38 INFO]: ThreadedAnvilChunkStorage (paper-creative): All chunks are saved [02:14:38 INFO]: Saving chunks for level 'ServerLevel[paper-creative_nether]'/minecraft:the_nether [02:14:38 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative_nether' [02:14:38 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative_nether' [02:14:38 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative_nether' [02:14:39 INFO]: [ChunkHolderManager] Saved 529 block chunks, 529 entity chunks, 0 poi chunks in world 'paper-creative_nether' in 0.70s [02:14:39 INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [02:14:39 INFO]: Saving chunks for level 'ServerLevel[paper-creative_the_end]'/minecraft:the_end [02:14:39 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative_the_end' [02:14:39 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative_the_end' [02:14:39 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative_the_end' [02:14:39 INFO]: [ChunkHolderManager] Saved 529 block chunks, 529 entity chunks, 0 poi chunks in world 'paper-creative_the_end' in 0.24s [02:14:39 INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved > 2023-12-13 02:14:39,947 Log4j2-AsyncAppenderEventDispatcher-1-Async WARN Advanced terminal features are not available in this environment [02:14:39 INFO]: ThreadedAnvilChunkStorage: All dimensions are saved [02:14:39 INFO]: Flushing Chunk IO [02:14:39 INFO]: Closing Thread Pool [02:14:39 INFO]: Closing Server
VisualModderの設定
一度起動を行うと、 plugins ディレクトリ内に visualmodder ディレクトリが生成され、 その中に visualmodder.properties ファイルが生成されています。 これがVisualModderの設定ファイルになります。 設定項目はあまり多くないですが、プログラム作成用のWeb画面に接続する際のIPアドレス(Paperが起動しているマシンのIPアドレス)は最低限設定します。
rock@rock-5a:/opt/paper$ cd plugins/visualmodder/ rock@rock-5a:/opt/paper/plugins/visualmodder$ ls -l total 8 drwxrwxr-x 2 rock rock 4096 Dec 13 02:14 logs -rw-rw-r-- 1 rock rock 1130 Dec 13 02:14 visualmodder.properties rock@rock-5a:/opt/paper/plugins/visualmodder$ vi visualmodder.properties
※以下、該当箇所のみ変更※ HTTP_SITE_IP=http://149.202.70.191 ↓変更 HTTP_SITE_IP=http://192.168.0.113
Paperの起動確認
最低限の設定だけですが、一通り利用できるようになったので、改めてPaperを起動します。 エラーなく起動できたらこのままMinecraftサーバとして利用できます。 ただし、この起動方法だとrockユーザのフォアグラウンドでPaperが起動しているので、rockユーザがログアウトしたり、 Ctrl+Cキーを押したりするとPaperが停止してしまいます。 なので、当手順は起動でエラーが出ないかだけの確認に留め、 stop でまたすぐに停止します。
rock@rock-5a:/opt/paper$ java -Xms2G -Xmx2G -jar paper-1.20.2-318.jar --nogui Starting org.bukkit.craftbukkit.Main System Info: Java 17 (OpenJDK 64-Bit Server VM 17.0.9+9-Ubuntu-122.04) Host: Linux 5.10.110-21-rockchip (aarch64) Loading libraries, please wait... [02:20:43 INFO]: Environment: Environment[accountsHost=https://api.mojang.com, sessionHost=https://sessionserver.mojang.com, servicesHost=https://api.minecraftservices.com, name=PROD] [02:20:45 INFO]: Loaded 1174 recipes [02:20:45 INFO]: Loaded 1271 advancements [02:20:46 INFO]: Starting minecraft server version 1.20.2 [02:20:46 INFO]: Loading properties [02:20:46 INFO]: This server is running Paper version git-Paper-318 (MC: 1.20.2) (Implementing API version 1.20.2-R0.1-SNAPSHOT) (Git: 9271ee7) [02:20:46 INFO]: Server Ping Player Sample Count: 12 [02:20:46 INFO]: Using 4 threads for Netty based IO [02:20:47 WARN]: [!] The timings profiler has been enabled but has been scheduled for removal from Paper in the future. We recommend installing the spark profiler as a replacement: https://spark.lucko.me/ For more information please visit: https://github.com/PaperMC/Paper/issues/8948 [02:20:47 INFO]: [ChunkTaskScheduler] Chunk system is using 1 I/O threads, 2 worker threads, and gen parallelism of 2 threads [02:20:47 INFO]: Default game type: CREATIVE [02:20:47 INFO]: Generating keypair [02:20:47 INFO]: Starting Minecraft server on *:25566 [02:20:47 INFO]: Using epoll channel type [02:20:47 INFO]: Paper: Using libdeflate (Linux aarch64) compression from Velocity. [02:20:47 INFO]: Paper: Using OpenSSL (Linux aarch64) cipher from Velocity. [02:20:47 INFO]: [visualmodder] Loading server plugin visualmodder v2.0 [02:20:47 INFO]: Server permissions file permissions.yml is empty, ignoring it [02:20:47 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE! [02:20:47 WARN]: The server will make no attempt to authenticate usernames. Beware. [02:20:47 WARN]: While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose. [02:20:47 WARN]: To change this, set "online-mode" to "true" in the server.properties file. [02:20:47 INFO]: Preparing level "paper-creative" [02:20:48 INFO]: Preparing start region for dimension minecraft:overworld [02:20:49 INFO]: Time elapsed: 394 ms [02:20:49 INFO]: Preparing start region for dimension minecraft:the_nether [02:20:49 INFO]: Time elapsed: 72 ms [02:20:49 INFO]: Preparing start region for dimension minecraft:the_end [02:20:49 INFO]: Time elapsed: 78 ms [02:20:49 INFO]: [visualmodder] Enabling visualmodder v2.0 [02:20:49 INFO]: [org.lauro.blocklyMc.VisualModderPlugin] Enabling visualmodder plugin [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] --------------------------- Visualmodder V2.0 --------------------------- [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Parameter file exists=true [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Listening to address http://192.168.0.113 [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Listening to port 10273 [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Using advanced permissions false [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Using mojang name validation true [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Loaded MAX_ALLOWED_ENTITIES_PER_PLAYER with values 30, 30, 30 [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Loaded MAX_EXECUTION_TIME_MILLISECS with values 25000, 25000, 25000 [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Loaded MAX_BLOCK_CREATION_DISTANCE with values 50, 50, 50 [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Server mode is = NORMAL [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] Missing Game commands. Did you set the parameter GAME_COMMANDS? [02:20:49 INFO]: [org.lauro.blocklyMc.c.c] LOGGING_LEVEL = INFO [02:20:49 INFO]: [org.lauro.blocklyMc.f.c] Starting webserver at http://<minecraft Address>:10273 [02:20:49 INFO]: [org.lauro.blocklyMc.e.c] --- Enabling Visualmodder plugin --- [02:20:49 INFO]: Running delayed init tasks [02:20:49 INFO]: Done (3.721s)! For help, type "help" [02:20:49 INFO]: Timings Reset > stop [02:21:09 INFO]: Stopping the server [02:21:09 INFO]: Stopping server [02:21:09 INFO]: [visualmodder] Disabling visualmodder v2.0 [02:21:09 INFO]: [org.lauro.blocklyMc.e.c] --- Disabling Visualmodder plugin --- [02:21:09 INFO]: [org.lauro.blocklyMc.f.c] Stopping webserver at http://<minecraft Address>:10273 is now closed [02:21:09 INFO]: Saving players [02:21:09 INFO]: Saving worlds [02:21:09 INFO]: Saving chunks for level 'ServerLevel[paper-creative]'/minecraft:overworld [02:21:09 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative' [02:21:09 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative' [02:21:09 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative' [02:21:11 INFO]: [ChunkHolderManager] Saved 529 block chunks, 529 entity chunks, 0 poi chunks in world 'paper-creative' in 1.20s [02:21:11 INFO]: ThreadedAnvilChunkStorage (paper-creative): All chunks are saved [02:21:11 INFO]: Saving chunks for level 'ServerLevel[paper-creative_nether]'/minecraft:the_nether [02:21:11 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative_nether' [02:21:11 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative_nether' [02:21:11 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative_nether' [02:21:12 INFO]: [ChunkHolderManager] Saved 529 block chunks, 529 entity chunks, 0 poi chunks in world 'paper-creative_nether' in 0.80s [02:21:12 INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved [02:21:12 INFO]: Saving chunks for level 'ServerLevel[paper-creative_the_end]'/minecraft:the_end [02:21:12 INFO]: [ChunkHolderManager] Waiting 60s for chunk system to halt for world 'paper-creative_the_end' [02:21:12 INFO]: [ChunkHolderManager] Halted chunk system for world 'paper-creative_the_end' [02:21:12 INFO]: [ChunkHolderManager] Saving all chunkholders for world 'paper-creative_the_end' [02:21:12 INFO]: [ChunkHolderManager] Saved 529 block chunks, 529 entity chunks, 0 poi chunks in world 'paper-creative_the_end' in 0.28s [02:21:12 INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved > 2023-12-13 02:21:12,526 Log4j2-AsyncAppenderEventDispatcher-1-Async WARN Advanced terminal features are not available in this environment [02:21:12 INFO]: ThreadedAnvilChunkStorage: All dimensions are saved [02:21:12 INFO]: Flushing Chunk IO [02:21:12 INFO]: Closing Thread Pool [02:21:12 INFO]: Closing Server
Paperをバックグラウンドで起動
rockユーザがログアウトしてもPaperが起動し続けるように、SIGHUPシグナルを無視するように nohup コマンドを付けて、 かつバックグラウンドで起動するよう & も付けた状態でPaperを起動します。 主となるjavaコマンドのオプションは変わりません。 この起動方法だと起動を実行したrockユーザがログアウトしてもPaperが停止せず起動し続けます。
※以下の表示結果では minecraft_server.1.20.2.jar も起動していますが、これは公式の Minecraft Server でPaperとは別で起動しているものです。 2つ同時に起動しても問題ないですが、初期値のポート番号が重複していたので、Paperのポート番号設定を変更しています。
rock@rock-5a:/opt/paper$ nohup java -Xms2G -Xmx2G -jar paper-1.20.2-318.jar --nogui & [1] 2716 rock@rock-5a:/opt/paper$ nohup: ignoring input and appending output to 'nohup.out' rock@rock-5a:/opt/paper$ ps -ef | grep java root 417 1 18 Dec12 ? 01:49:25 java -Xms2G -Xmx2G -jar minecraft_server.1.20.2.jar --nogui rock 2716 1940 99 02:21 pts/0 00:01:57 java -Xms2G -Xmx2G -jar paper-1.20.2-318.jar --nogui rock 2803 1940 0 02:22 pts/0 00:00:00 grep --color=auto java
上記の状態でPaperを停止したい場合は kill
利用方法
VisualModderのプログラムエディタへ接続
ブラウザで「http://セットアップしたサーバのIPアドレス:10273/editor/minecraft/index.html」にアクセスすると、 VisualModderのプログラムエディタが表示されます。
画面右上に『Minecraft_player_name』と入力されている入力フォームがあるので、 Minecraftのユーザ名を入力します。
GUI画面上でプログラミングします。 試しに[give me]アクションで[Stone Sword(石の剣)]をアイテムとしてもらう、『ss』という名前のコマンドを作成します。
MinecraftでPaperへ接続
続いてMinecraft Java Editionを起動して、[マルチプレイ]をクリックします。
「警告:サードパーティ製のオンラインサーバー」画面が表示されますが、 自分で起動しているPaperに接続しているので、気にせず[続ける]をクリックします。
「マルチプレイで遊ぶ」画面が表示されたら、[ダイレクト接続]をクリックします。
「ダイレクト接続」画面が表示されたら、[サーバーアドレス]に『PaperをセットアップしたサーバのIPアドレス:25565』を入力して[サーバに接続]をクリックします。
「サーバーに接続中...」画面が表示されるので、接続されるまでほんの少し待ちます。
Paperのサーバへの接続が成功するとMinecraftのゲーム画面が表示されます。
※初めて接続した場合アイテムは何も持っていません。
VisualModderで作成したコマンドをMinecraftのゲーム上で実行
先ほどVisualModderのプログラムエディタ上で作成した『ss』コマンドを実行してみます。 キーボードから『/vm ss』と入力し、[Return]キーを押します。
ホットバー(手持ちアイテムのスロット)に石の剣が追加されました。 このようにVisualModderのプログラムエディタでプログラミングした内容がMinecraftのゲームから利用できるようになります。
※あくまでVisualModderのプラグインを導入したPaperのサーバに接続して遊ぶ場合に限ります。
以上でPaperとVisualModderのインストールと簡易的な動作確認は終了です。 VisualModderでのプログラミングについてはこれ以上触れませんので、 VisualModder公式サイトのチュートリアルなどで学習してください。