在GCE上搭建Minecraft[1.17]的MOD服务器【GCP】
搭建MinecraftMOD服务器
看起来Fabric和Optifine似乎已经兼容了1.17版本,
所以我们可以建立一个多MOD服务器。
这次要安装的东西 cì shù de
-
- Fabric installer v0.7.4 (1.17.1まで対応)
-
- Fabric API v0.36.0 (1.17まで対応)
-
- Optifabric v1.11.9 (1.17まで対応)
- Optifine_1.17_HD_G9_pre26 (1.17対応)
※2020/07/10 現在最新版本为1.17.1,但Optifabric仅支持到1.17,所以需要升级到1.17以与其匹配。
创建实例
使用Terraform启动实例
- スペック
- tfファイル作成
resource "google_compute_address" "mcs02-ip" {
name = "mcs02"
description = "external IP for mcs02"
network_tier = "STANDARD"
region = "asia-northeast1"
}
resource "google_compute_instance" "minecraft-mod-server" {
machine_type = "e2-standard-4"
name = "mcs02"
project = "[PROJECT_ID]"
tags = ["minecraft-server", "internal"]
zone = "asia-northeast1-c"
metadata = {
"shutdown-script-url" = "gs://[bucket-name]/backup-fabric.sh"
"startup-script-url" = "gs://[bucket-name]/startup-fabric-mcs.sh"
}
boot_disk {
auto_delete = true
device_name = "mcs02"
mode = "READ_WRITE"
initialize_params {
image = "https://www.googleapis.com/compute/v1/projects/centos-cloud/global/images/centos-stream-8-v20210512"
labels = {}
size = 20
type = "pd-standard"
}
}
network_interface {
network = google_compute_network.vpc.name
network_ip = "10.0.0.4"
subnetwork = google_compute_subnetwork.public-subnet-1.name
access_config {
nat_ip = google_compute_address.mcs02-ip.address
network_tier = "STANDARD"
}
}
service_account {
email = "565378471472-compute@developer.gserviceaccount.com"
scopes = [
"https://www.googleapis.com/auth/cloud-platform",
]
}
scheduling {
preemptible = true
automatic_restart = false
}
}
$ terraform plan
$ terraform apply
服务器内工作
安装图书馆、中间件等
- とりあえず
# dnf -y update
- 必要ライブラリインストール
# dnf -y install make ncurses-devel wget gcc
wget: 用于 JDK、screen 和 MOD 类的下载所需
make、ncurses-devel、gcc: 用于 screen 安装所需
- OpenJDK16インストール
从Minecraft 1.17开始,需要JDKv16或以上的版本。
# cd /usr/local/src
# wget https://download.java.net/java/GA/jdk16.0.1/7147401fd7354114ac51ef3e1328291f/9/GPL/openjdk-16.0.1_linux-x64_bin.tar.gz
# tar xzvf openjdk-16.0.1_linux-x64_bin.tar.gz
# mv jdk-16.0.1 /usr/local/jdk
# cd /usr/local/bin
# ln -s /usr/local/jdk/bin/java java
$ java -version
openjdk version "16.0.1" 2021-04-20
OpenJDK Runtime Environment (build 16.0.1+9-24)
OpenJDK 64-Bit Server VM (build 16.0.1+9-24, mixed mode, sharing)
- screenインストール
# cd /usr/local/src && wget http://ftp.gnu.org/gnu/screen/screen-4.8.0.tar.gz
# tar xzvf screen-4.8.0.tar.gz
# cd screen-4.8.0
# ./configure
# make
# cd ../
# mv screen-4.8.0 /usr/local/screen
# cd /usr/local/bin
# ln -s /usr/local/screen/screen screen
$ screen
MOD服务器、安装MOD
安装Fabric
请参考[安装教程]页面上的官方网站。
- installer.jarダウンロード
# curl https://maven.fabricmc.net/net/fabricmc/fabric-installer/0.7.4/fabric-installer-0.7.4.jar -o fabric-installer-0.7.4.jar
- ヘルプ確認
# java -jar fabric-installer-0.7.4.jar help
Loading Fabric Installer: 0.7.4
help - Opens this menu
client -dir <install dir> -mcversion <minecraft version, default latest> -loader <loader version, default latest>
server -dir <install dir, default current dir> -mcversion <minecraft version, default latest> -loader <loader version, default latest> -downloadMinecraft
- Optionは以下の通り
-snapshot Enables the usage of snapshot versions of Minecraft.
-dir Used to select the installation dir, defaults to the current working directory.
-mcversion Used to select the minecraft version, defaults to the latest stable version.
-loader Used to select the loader version, defaults to the latest.
-downloadMinecraft Used to automatically download the Minecraft server jar
-noprofile Skip creating client profile
-mavenurl (advanced) Use a custom maven url when installing
-metaurl (advanced) Use a custom meta server url
java -jar fabric-installer.jar server 可以通过这个命令进行安装
似乎可以通过添加 -dir “/home/minecraft” 来指定安装目录
-downloadMinecraft 似乎可以下载原版的 server.jar
-mcversion:可以指定要安装的 Minecraft 服务器版本
如果不指定的话,默认会是最新版本(1.17.1),所以这次我们指定为1.17
- インストール実行
# java -jar fabric-installer-0.7.4.jar server -mcversion 1.17 -downloadMinecraft
Loading Fabric Installer: 0.7.4
Using latest loader version
Installing Fabric Loader 0.11.6(1.17) on the server
Downloading required files
Downloading library net.fabricmc:tiny-mappings-parser:0.2.2.14
...
...
Done, start server by running fabric-server-launch.jar
Downloading Minecraft server
Done
# ls
fabric-installer-0.7.4.jar fabric-server-launch.jar server.jar
- 初回実行
# java -jar -Xms6G -Xmx10G fabric-server-launch.jar nogui
文件已创建,请同意用户许可协议的警告。
# ll
total 47900
drwxr-xr-x. 2 root root 6 Jul 10 06:52 config
-rw-r--r--. 1 root root 181 Jul 10 06:52 eula.txt
-rw-r--r--. 1 root root 132959 Jul 10 06:38 fabric-installer-0.7.4.jar
-rw-r--r--. 1 root root 51 Jul 10 06:52 fabric-server-launcher.properties
-rw-r--r--. 1 root root 5269476 Jul 10 06:50 fabric-server-launch.jar
drwxr-xr-x. 2 root root 24 Jul 10 06:52 logs
drwxr-xr-x. 2 root root 6 Jul 10 06:52 mods
-rw-r--r--. 1 root root 43626592 Jul 10 06:44 server.jar
-rw-r--r--. 1 root root 1039 Jul 10 06:53 server.properties
- End User Lisence Agreement に同意
$ sed -i -e 's/false/true/g' eula.txt
- いったん起動して入ってみる
# java -jar -Xms6G -Xmx10G fabric-server-launch.jar nogui
[07:04:26] [main/INFO]: Loading for game Minecraft 1.17
[07:04:26] [main/INFO]: [FabricLoader] Loading 3 mods:
- fabricloader@0.11.6
- java@16
- minecraft@1.17
[07:04:26] [main/INFO]: SpongePowered MIXIN Subsystem Version=0.8.2 Source=file:/home/minecraft/fabric-server-launch.jar Service=Knot/Fabric Env=SERVER
...
...
[07:05:31] [Worker-Main-5/INFO]: Preparing spawn area: 90%
[07:05:31] [Server thread/INFO]: Time elapsed: 42580 ms
[07:05:31] [Server thread/INFO]: Done (51.592s)! For help, type "help"
[07:05:46] [User Authenticator #1/INFO]: UUID of player c0ba1t_coke is 8fe2893f-e45a-45c5-9889-2e2249a37b7b
[07:05:46] [Server thread/INFO]: c0ba1t_coke[/157.107.66.89:58914] logged in with entity id 417 at (159.5, 68.0, 113.5)
[07:05:46] [Server thread/INFO]: c0ba1t_coke joined the game
[07:06:00] [Server thread/INFO]: c0ba1t_coke lost connection: Disconnected
[07:06:00] [Server thread/INFO]: c0ba1t_coke left the game
放进去了!
安装 Fabric API。
由于FabricAPI的源代码位于GitHub上,您需要将其放置在mods目录中。
由于README.md文件中有指向GitHub Releases的链接,请点击该链接以进入源代码的下载页面。
# Using Fabric API to play with mods
Make sure you have install fabric loader first. More information about installing Fabric Loader can be found here.
To use Fabric API, download it from CurseForge, [GitHub Releases](https://github.com/FabricMC/fabric/releases) or Modrinth.
The downloaded jar file should be placed in your mods folder.
- [1.17]fabricapi0.36.0をDL
# cd /home/minecraft/mods
# wget https://github.com/FabricMC/fabric/releases/download/0.36.0%2B1.17/fabric-api-0.36.0+1.17.jar
只用这一个步骤,应该就完成了安装。
安装Optifine
安装Optifabric和Optifine
OptifineをFabricと連携して動かすにはOptifabricというやつがいるらしい
どっちもmodsディレクトリにぶち込むだけでOK
- Cloud Storageに保存
由于似乎无法使用wget或curl进行安装,因此请将其下载到本地个人电脑上,然后将其上传到云存储上。
コンソールで実施
– Cloud Storage → [ブラウズ]
– 保存するバケット名を選択
– [ファイルをアップロード]をクリック
– optifabric-1.11.9.jar , preview_OptiFine_1.17_HD_G9_pre26.jar をアップロード
- アップロードした.jarファイルをDL
# cd /home/minecraft/mods
# gsutil ls gs://[bucket-name]
gs://[bucket-name]/optifabric-1.11.9.jar
gs://[bucket-name]/preview_OptiFine_1.17_HD_G9_pre26.jar
# gsutil cp gs://[bucket-name]/optifabric-1.11.9.jar ./
Copying gs://[bucket-name]/optifabric-1.11.9.jar...
/ [1 files][374.2 KiB/374.2 KiB]
Operation completed over 1 objects/374.2 KiB.
# gsutil cp gs://[bucket-name]/preview_OptiFine_1.17.1_HD_G9_pre26.jar ./
Copying gs://[bucket-name]/preview_OptiFine_1.17_HD_U_G9_pre26.jar...
/ [1 files][ 6.0 MiB/ 6.0 MiB]
Operation completed over 1 objects/6.0 MiB.
# ls
fabric-api-0.36.1+1.17.jar optifabric-1.11.9.jar preview_OptiFine_1.17_HD_U_G9_pre26.jar
確認
# java -jar -Xms6G -Xmx10G fabric-server-launch.jar nogui
[08:22:47] [main/INFO]: Loading for game Minecraft 1.17
[08:22:47] [ForkJoinPool-1-worker-3/WARN]: Non-Fabric mod JAR at "/home/minecraft/mods/preview_OptiFine_1.17_HD_U_G9_pre26.jar", ignoring
[08:22:47] [main/INFO]: [FabricLoader] Loading 49 mods:
- fabric@0.36.0+1.17
- fabric-api-base@0.3.0+a02b44633d
...
...
[08:23:21] [Worker-Main-6/INFO]: Preparing spawn area: 88%
[08:23:22] [Worker-Main-5/INFO]: Preparing spawn area: 91%
[08:23:22] [Worker-Main-4/INFO]: Preparing spawn area: 92%
[08:23:23] [Worker-Main-4/INFO]: Preparing spawn area: 94%
[08:23:23] [Worker-Main-6/INFO]: Preparing spawn area: 98%
[08:23:24] [Server thread/INFO]: Time elapsed: 20068 ms
[08:23:24] [Server thread/INFO]: Done (20.282s)! For help, type "help"
[08:23:58] [User Authenticator #1/INFO]: UUID of player c0ba1t_coke is 8fe2893f-e45a-45c5-9889-2e2249a37b7b
[08:23:59] [Server thread/INFO]: c0ba1t_coke[/157.107.66.89:52072] logged in with entity id 291 at (-148.8212634465673, 72.0, 75.84669863105151)
[08:23:59] [Server thread/INFO]: c0ba1t_coke joined the game
[08:24:02] [Server thread/INFO]: c0ba1t_coke lost connection: Disconnected
[08:24:02] [Server thread/INFO]: c0ba1t_coke left the game
已经加进去了!即使查看了设置,Optifine的选项也增加了!
(额外) 实例设置修正
脚本修改
我想将startup-script和backup-script与上一台服务器(1.17基准版)的脚本分开,需要修改脚本并重新放置。
# cat startup-fabric-mcs.sh
#!/bin/bash
(crontab -l | grep -v -F "/home/minecraft/backup-fabric.sh" ; echo "0 */1 * * * /home/minecraft/backup-fabric.sh")| crontab -
cd /home/minecraft
screen -d -m -S mcs java -jar -Xms6G -Xmx10G fabric-server-launch.jar nogui
# cat backup-fabric.sh
#!/bin/bash
screen -r mcs -X stuff '/save-all\nsave-off\n'
/usr/bin/gsutil cp -R /home/minecraft/world gs://[bucketname-fabric]/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'
-
- わかりやすいようにバケットをFabric専用にしておく
- アップロード
# gsutil cp startup-fabric-mcs.sh gs://[bucket-name]/
# gsutil cp backup-fabric.sh gs://[bucket-name]/
Terraform 修改 → Terraform 调整
# google_compute_instance.minecraft-mod-server will be updated in-place
~ resource "google_compute_instance" "minecraft-mod-server" {
id = "projects/gaming-265014/zones/asia-northeast1-c/instances/mcs02"
~ metadata = {
~ "shutdown-script-url" = "gs://[bucket-name]/backup.sh" -> "gs://[bucket-name]/backup-fabric.sh"
~ "startup-script-url" = "gs://[bucket-name]/startup-mcs.sh" -> "gs://[bucket-name]/startup-fabric-mcs.sh"
- スクリプトをそれぞれfabric用のを読み込むように変更
请重新启动以确认自动启动。
-
- Storageにバックアップが作成されてるのでよさそう
- Minecraftで接続もできる!
我对完走的感想
尽管OptiFine支持到1.17.1版本,但OptiFabric在1.17版本上重新开始而且糟糕透了。
以前只在本地Windows上搭建过MOD服务器,但很高兴在Linux上也能成功搭建。(虽然有一部分只凭技术力量完成)
布料,OptiFine的更新速度真的很快,所以以后可能不需要用原版了吗?