Minecraft我的世界部署教程

部署

费了老鼻子劲才搞懂如何部署,对新人实在是太不友好了。所以总结一下。

这里选用 PaperMC + Veloity,使用 docker compose 部署。

结构

首先搞清楚服务器部署原理,有两个东西。

  • Minecraft 服务端
  • Minecraft 服务代理

服务核心常见的主要有三种。

  • Vanilla
    官方的最原始的纯净服务端。
  • 插件端
    插件端就是插件只需要安装在服务器李。客户端是不需要任何修改的。比如安装一键砍树,一些简单的功能扩展这种。
    下面是几个常见的服务端:
    • Bukkit
      给官服加入插件机制,已停止开发,主要继承者是 Spigot。
    • Spigot
      给 Bukkit 服务端加入大量优化,速度相当快,大众常用的一个服务端。
    • Paper
      基于 Spigot 添加了一些比较深度的优化,是最快、大众常用的服务端。
  • Mod 端
    Mod 端是需要同时在客户端和服务端安装Mod的,这些都是设计重大更改的,比如工业模组这种。同时由于大量的逻辑功能修改,相对于插件端,很多Mod(注意不是指Mod服务端,而是指Mod)他们会重点专注于某些版本上。插件端相对来说,插件会很快更新到新版本。
    • Forge
      老牌,稳定。
    • Fabric
      因为不满于Forge更新慢。 退出的模块化,开源服务端。

服务代理是当你有多个服务端的时候,才需要的东西,通过一个代理,别人可以只记住代理的入口,然后就可以先进入大厅世界,在大厅里选择不同的服务端进入。或者在进入大厅世界,由自己或者管理员输入命令传送到不同的服务端。

这里选择Velocity,因为他和Paper服务端是最适配的。

准备

compose.yaml:

version: '3.8'

services:
  lobby:
    image: phyremaster/papermc:latest
    container_name: mc-lobby
    restart: unless-stopped
    ports:
      # java
      - "25566:25565"
    volumes:
      - ../docker-data/servers/lobby:/papermc
    environment:
      TZ: 自己改
      MC_VERSION: "1.20.2"
      EULA: true
  survival:
    image: phyremaster/papermc:latest
    container_name: mc-survival
    restart: unless-stopped
    ports:
      # java
      - "25567:25565"
      # bluemap
      - "8100:8100"
    volumes:
      - ../docker-data/servers/survival:/papermc
    environment:
      TZ: 自己改
      MC_VERSION: "1.20.2"
      EULA: true
  creative:
    image: phyremaster/papermc:latest
    container_name: mc-creative
    restart: unless-stopped
    ports:
      # java
      - "25568:25565"
      # bluemap
      - "8200:8100"
    volumes:
      - ../docker-data/servers/creative:/papermc
    environment:
      TZ: 自己改
      MC_VERSION: "1.20.2"
      EULA: true
  velocity:
    image: mythoscode/velocity:3.2.0-SNAPSHOT-265
    container_name: mc-velocity
    network_mode: host
    # ports:
    #   - "25577:25577"
    volumes:
      - ../docker-data/velocity:/data
    environment:
      - JAVA_MEMORY=512M
      - JAVA_FLAGS=-XX:+UseStringDeduplication -XX:+UseG1GC -XX:G1HeapRegionSize=4M -XX:+UnlockExperimentalVMOptions -XX:+ParallelRefProcEnabled -XX:+AlwaysPreTouch

你会看到我这里还特地多开了端口,是为bluemap插件。可以从网页端查看地图。

然后由于我用的是ARM服务器,所以自己构建了一下 Veloity的镜像,如果是AMD就直接用官方的镜像吧。

修改配置文件

先启动 docker compose 项目。注意我专门设置了一个项目名称 mc.

docker compose -p mc up

配置支持 Veloity

通常来说是需要先去配置文件夹里修改 eula 声明为 true的,不过我们在环境里面已经配置过了,所以就省略了,他已经自动帮我们改为true了。

官网还推荐改的:
velocity.toml
player-info-forwarding 改为 modern

配置服务器地址,根据自己的实际服务器和网址修改。

# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577.
bind = "0.0.0.0:25575"
[servers]
# Configure your servers here. Each key represents the server's name, and the value
# represents the IP address of the server to connect to.
lobby = "127.0.0.1:25566"
survival = "127.0.0.1:25567"
creative = "127.0.0.1:25568"

# In what order we should try servers when a player logs in or is kicked from a server.
try = [
    "lobby"
]

[forced-hosts]
# Configure your forced hosts here.
"lobby.com" = [
    "lobby"
]
"survival.com" = [
    "survival"
]
"creative.com" = [
    "creative"
]

然后打开 Veloity 的 forwarding.secret 文件,复制密钥。

为了让服务器和代理可以正常使用,还需要对 Paper 设置做出修改以配合 Veloity的设置:

server.properties:
online-mode 改为 false

spigot.yml:
settings.bungeecord 改为 false 。这个默认就是 false

config/paper-global.yml:
proxies.velocity.enabled 改为 true
proxies.velocity.secret 改为刚才从 forwarding.secret 复制的密钥。

其他配置

接下来就是按照自己的需求配置某些功能、权限和插件了。

这里记录了一些我想要修改的东西:

  • 打开命令方块:
    server.properties
    Minecraft我的世界部署教程_第1张图片
    来源: https://www.youtube.com/watch?v=hozrPSujlMk

  • 取消末地:
    bukkit.yaml
    请添加图片描述

  • 取消下界
    server.properties
    Minecraft我的世界部署教程_第2张图片

  • 取消出身点保护机制, 这个会让出生点的命令方块无法在非 op 玩家上运行。
    server.properties

    spawn-protection=0
    
  • 设置难度
    server.properties

    difficulty=hard
    

安装插件

Velocity

  • geyser
    Geyser 是一个代理,允许 Minecraft Bedrock 版本的玩家连接到 Minecraft Java 版本的服务器。
    它转换了 Bedrock 协议到 Java 协议,从而使这两个不同的版本可以交互。
    这意味着一个使用 Bedrock 版本的玩家(如在手机、Windows 10、Xbox、Switch 上的玩家)可以连接到 Java 服务器并与 Java 玩家一起玩。
    下载 jar 包,然后放入plugins 文件夹。具体教程看官网。

  • floodgate
    Floodgate 是 Geyser 的一个可选插件。
    它允许 Bedrock 玩家无需拥有一个 Java 账户就可以连接到 Java 服务器。如果没有 Floodgate,Bedrock 玩家则需要拥有 Java 版 Minecraft 的账户才能加入。
    当 Bedrock 玩家使用 Floodgate 加入服务器时,它们会有一个特定的用户名格式,以区分他们是通过 Geyser 和 Floodgate 加入的。

  • SkinsRestorer
    可以让非正版服务器正确显示皮肤。
    官网推荐同时把这插件放到 proxy 和 server。同时还需要修改配置文件。

  • Viaversion
    可以选择安装在代理或者 server上。
    https://www.spigotmc.org/resources/viaversion.19254/

Paper

  • Bluemap
    地图
    https://bluemap.bluecolored.de/
    注意 nginx 配置官网的教程不行,需要这样写:

    location ~/survival(.*)$ { 
        proxy_pass http://127.0.0.1:8100$1;
    }
    
  • DeathCoordinates
    死亡后显示死亡坐标
    https://github.com/MythosCode/papermc-death-coordinates

  • ProxyCommand
    把命令传递给Velocity,执行 BungeeCord 命令
    https://github.com/MythosCode/papermc-proxy-command

你可能感兴趣的:(Minecraft,Minecraft)