在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启动实例

    スペック
項目スペックインスタンスタイプe2-standard-4ディスクpd-standardディスク容量20GBリージョンasia-northeast1プリエンプティブルオン
    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的更新速度真的很快,所以以后可能不需要用原版了吗?

广告
将在 10 秒后关闭
bannerAds