• 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-269
        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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57

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

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

    修改配置文件

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

    docker compose -p mc up
    
    • 1

    配置支持 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"
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    然后打开 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
      请添加图片描述
      来源: https://www.youtube.com/watch?v=hozrPSujlMk

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

    • 取消下界
      server.properties
      请添加图片描述

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

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

      difficulty=hard
      
      • 1
    • 设置管理员
      https://xgamingserver.com/blog/adding-an-op-admin-to-minecraft-server-using-ops-json-and-op-username/

    安装插件

    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/
      修改 core.conf 主要是 accept download 然后是cpu 核心数。
      webserver.conf 修改port 等。
      注意 nginx 配置官网的教程不行,需要这样写

      location ~/survival(.*)$ { 
          proxy_pass http://127.0.0.1:8100$1;
      }
      
      • 1
      • 2
      • 3
    • HoloMobHealth
      显示伤害和健康
      https://www.spigotmc.org/resources/holomobhealth-display-mob-health-damage-indicator-client-side-javascript-formatting.75975/

    • 背包整理
      https://www.spigotmc.org/resources/chestsort-api.59773/

    • DeathCoordinates
      死亡后显示死亡坐标
      https://github.com/MythosCode/papermc-death-coordinates

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

    • 连锁挖矿
      https://www.spigotmc.org/resources/superharvest-animated-light-weight-lag-free-fully-configurable-open-source-1-8-1-20-2.103034/

    客户端

    • xaeros MAP
      https://www.curseforge.com/minecraft/mc-mods/xaeros-minimap

    其他

    ubuntu 指定 navidia GPU 启动客户端。
    更新系统内核,确保GPU driver已经安装。
    找到 /usr/share/applications 下的 minecraft-launcher.desktop 做出以下修改: https://www.reddit.com/r/linux_gaming/comments/or5u7k/running_minecraft_with_dgpu/:

    [Desktop Entry]
    Type=Application
    Version=1.0
    Name=Minecraft Launcher
    Comment=Official Minecraft Launcher
    Exec=bash -c "__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia minecraft-launcher"
    Icon=minecraft-launcher
    Terminal=false
    Categories=Game;Application;
    StartupWMClass=minecraft-launcher
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    选择

    还是Fabric + iris

    开发

    paper api 开发
    https://www.bilibili.com/video/BV1gA411o7cm/?vd_source=321e57a11e165526e4b7c3288c66b8f6
    https://docs.papermc.io/paper/dev/project-setup
    https://blog.csdn.net/L1Z1357/article/details/131821653

    command 注册问题:https://forums.papermc.io/threads/cant-register-command.802/

  • 相关阅读:
    机器学习之线性回归详解
    Django request.META.get()获取不到header头的原因分析
    IronSource 聚合广告平台接入踩坑日记——游戏声音消失
    API网关是什么?
    linux查看内存的方式
    2024.05.14 Diffusion 代码学习笔记
    无线传输终端 无线通信模块 全网通5G/4G
    打包Qt程序,自动添加依赖的库和文件(详细步骤)
    Navicat将视图结构导出为可运行SQL文件
    仿大众点评——秒杀系统部分01
  • 原文地址:https://blog.csdn.net/qq_37705552/article/details/133418056