OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

Paper 1.20.2にVisualModderのプラグインを導入して自宅にプログラミング環境を構築する

カテゴリ:OSSセットアップ | ソフトウェア:Minecraft | タグ:
最終更新日:2024-01-04 | 公開日:2024-01-04

目次

概要

 最近自分も含めて家族が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して設定しました。

■ハードウェアスペック
項目内容
SoCRockchip RK3588S
CPU4x Cortex-A76
4x Cortex-A55
GPUMali 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
ファイル名:/opt/paper/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
ファイル名:/opt/paper/plugins/visualmodder/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 ※上記の場合は kill 2716 で停止します。 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公式サイトのチュートリアルなどで学習してください。

参考にしたサイト