本文来源于《基岩版开服指南》,作者Kindle deep,按照原网站采用 CC BY-NC-SA 4.0 许可协议搬运,对原文略有改动。我想近期搭建一个我的世界公益服务器(大概率是基岩版)的想法,因此把这篇文章搬运了过来备查。
顺便一提,原文作者自称是初一的小同学,博客里有很多php、图床之类的有用资料,后生可畏也。
https://kindle-deep.github.io/posts/a4084311

目前基岩版服务器有两种核心可用:

  • Bedrock Dedicated Server (简称 BDS) 由微软官方开发,与所有平台的 Minecraft 基岩版有相同的核心,且可以跨平台联机(NS, xbox 除外),适合原版生存
  • Nukkit 由第三方独立开发的开源核心,生态优于 BDS 但由于功能不完整不适合原版生存,适合搭建各类安装插件的服务器 (如小游戏服务器)

bds for windows 准备工作 1.官方BDS核心 2.一台装载着 Windows 10 1703 或 Windows Server 2016 或更高版本的操作系统的电脑 3准备一台 CPU 核心数不低于 2 核,并配有不低于 1GB RAM 的电脑 4.无公网ip的可以使用樱花FRP,路由侠和花生壳等内网穿透软件

开服配置
解压 BDS 压缩包后,可以在根目录下看到配置文件 server.properties。

我们可以通过更改配置文件来达到初始化世界的目的。

配置文件注释

  • server-name = Dedicated Server # 服务器名称
  • gamemode = survival # 为新玩家设置游戏模式 # 允许值: # 生存: survival # 创造: creative # 冒险: adventure
  • difficulty = easy # 设定世界的难度 # 允许值: # 和平: peaceful # 简单: easy # 普通: normal # 困难: hard
  • allow-cheats = false # 是否允许使用类似命令的作弊手段。 # 允许值: # 是: true # 否: false
  • max-players = 10 # 服务端上可以同时在线的最大玩家数。 # 允许值: [1, ∞]
  • online-mode = true # 是否对所有连接的玩家进行 Xbox Live 身份验证。 # 无论此设置如何,连接到远程 (非本地) 服务端的客户端将始终需要 Xbox Live 身份验证。 # 如果服务端接受来自互联网的连接,则强烈建议启用联机模式。 # 允许值: # 是: true # 否: false
  • white-list = false # 是否启用白名单模式 # 如果值为 true,则必须在 whitelist.json 文件中列出所有连接的玩家。 # 允许值: # 是: true # 否: false
  • server-port = 19132 # 服务端应监听哪个IPv4端口。 # 允许值: [1, 65535]
  • server-portv6 = 19132 # 服务端应监听哪个IPv6端口。 # 允许值: [1, 65535]
  • view-distance = 32 # 允许的最大视距 (以方块数为单位) 。 # 允许值: [1, ∞]
  • tick-distance = 4 # 停止加载区块的距离 # 允许值 : [4, 12]
  • player-idle-timeout = 30 # 挂机玩家被踢出的时间 # 允许值: [0, ∞]
  • max-threads = 8 # 服务端使用的最大线程数,如果设置为0,服务端会尽可能多地使用所有线程。 # 允许值: [0, ∞]
  • level-name = Bedrock level # 世界名称以及文件夹名
  • level-seed = # 为世界定义一个种子
  • default-player-permission-level = member # 新玩家的游戏模式 # 允许值: # 游客: visitor # 会员: member # 管理员: operator
  • texturepack-required = false # 强制客户端加载服务端资源包 # 允许值: # 是: true # 否: false
  • content-log-file-enabled = false # 启用将会使错误内容记录到日志文件中 # 允许值: # 是: true # 否: false
  • compression-threshold = 1 # 要压缩的原始网络有效负载的最小大小 # 允许值 : [0, 65535] # 当前版本 (1.16.220.02) mojang 正在重做服务器权威移动,无法正常使用。
  • server-authoritative-movement = true # 启用服务端权威性移动。 # 如果值为 true ,则服务端将在以下位置重设本地用户输入。 # 1. 客户端的位置与服务端的位置不匹配时,发送服务端更正位置并向下发送至客户端更正。 # 2. 仅当正确的玩家移动设置为 true 时,才会进行更正。
  • player-movement-score-threshold = 20 # 报告异常行为之前所需的数据不一致的数量。 # 仅在 server-authoritative-movement 选项开启时生效
  • player-movement-distance-threshold = 0.3 # 在检测到异常行为之前,服务端与客户端数值之差。 # 仅在 server-authoritative-movement 选项开启时生效
  • player-movement-duration-threshold-in-ms = 500 # 服务端和客户端位置的时间长度可能不同步 (在 server-authoritative-movement 选项为”false”时失效) # 在异常移动计数增加之前。 此值以毫秒为单位定义。 # 仅在 server-authoritative-movement 选项开启时生效
  • correct-player-movement = false # 是否在移动值超过阈值时,将客户端的玩家位置校正为服务端玩家的位置。 # 允许值: # 是: true # 否: false
  • server-authoritative-block-breaking = false # 启用服务端权威性挖掘 # 如果值为 true ,则服务端将与客户端同步计算挖掘,并且更正与服务端计算不符的非法挖掘 数据压缩如果阈值过低,压缩会占用 CPU ,而开太高会导致流量消耗过快,请自行权衡

可选配置

  • level-type = DEFAULT # 世界的类型 # 可用值: DEFAULT,LEGACY,FLAT (无限,有限,超平坦)
  • world-type = # 是否开启教育版,实验性玩法 # 可用值: 未知

注意事项 如果您想同时在一台电脑上运行服务端和客户端,并且想通过客户端直接连接本地的话,可能会遇到一些问题:某些 Windows 版本默认不允许 UWP 应用形成本地回环,需要手动解除限制。

请使用管理员权限在 PowerShell 中执行以下命令并重启电脑:

CheckNetIsolation.exe LoopbackExempt –a –p=S-1-15-2-1958404141-86561845-1752920682-3514627264-368642714-62675701-733520436

然后bds核心的服务器就开好了
接下来就是linux的了

开服之前
1.一个可用的 frpc
2.最新版本的 BDS-Linux 核心
3.一台装载着 Ubuntu 18.04 或更高版本的操作系统的电脑
4.CPU 核心数大于等于 2 核,1GB RAM

开服配置
请参考 BDS on Windows 章节中的 开服配置 。

注意事项
RHEL 8 (CentOS 8) 可能缺少 libnsl 包,此时服务端将无法正常启动

请使用以下命令进行安装:

sudo dnf install -y libnsl

然后就是linux下的nukkit

NUKKIT on Linux
开服之前
准备一个可用的 frpc
准备最新版本的 NUKKIT bedrock 核心(请自行上网下载)
准备一台安装好 Java 环境的 Linux 主机
开服配置
配置文件注释
请参考 BDS on Windows 章节中的 配置文件注释 。

安装 JAVA

Ubuntu / Debian

sudo apt update
sudo apt install openjdk-8-jre-headless -y
CentOS / RHEL

sudo yum update
sudo yum install java -y

BDS 核心进阶教程
白名单
可以直接在服务端控制台用如下指令编辑白名单:

指令 作用 whitelist add “Example Name” 根据昵称添加白名单 whitelist remove “Example Name” 根据昵称移除白名单 whitelist list 输出 whitelist.json 的内容 您可以直接在 whitelist.json 里编辑白名单:

[
{
“ignoresPlayerLimit”: false, // 是否无视玩家上限 (即使服务器满员该玩家也可进入)
“name”: “MyPlayer”
},
{
“ignoresPlayerLimit”: false,
“name”: “AnotherPlayer”,
“xuid”: “123456789” // 其中xuid和昵称有一个就可以,该玩家第一次登入的时候会自动补全
}
]

规则管理
配置文件热更改
如果想在服务器正常运行的情况下修改配置文件的内容,可以通过以下指令管理规则:

指令 作用
changesetting 修改配置
白名单热更改
指令 作用

whitelist on 开启白名单 whitelist off 关闭白名单 whitelist list 打印 whitelist.json 内容 whitelist reload 将 whitelist.json 内容重新加载到内存

管理 OP 如果 OP 想在游戏内使用指令,则必须开启允许作弊的选项 (allow-cheat = true)

可以通过以下指令编辑权限:

指令 作用

op “example players” 添加权限 deop “example players” 剥夺权限 permission list 打印 permission.json 内容 permission reload 将 permission.json 内容重新加载到内存

踢出用户 指令 作用 kick “example players” 踢出用户 关闭服务器 指令 作用 stop 软关闭服务器 备份服务器 指令 作用 说明 save hold 服务器做备份准备 它是异步的,并将立即返回。 save query 查询备份准备进度 返回准备进度,它将返回需要复制的文件的文件列表。 save resume 删除旧文件 当您完成文件的复制时,您可调用这个函数来告诉服务器删除旧文件。 游戏参数修改 在根目录下会有一个行为包目录 behavior_packs,可以通过修改这个文件来达成修改游戏数据的目的。

其中有多个小文件,名称上带有 experience 或者 developing 的是实验性行为包,如果没有开启实验性玩法的话是不用修改这个文件夹里的内容的。

材质包
基岩版的材质包的对应关系是具体到某个世界的。将材质包放入 resource_packs 文件夹后需要再进行一些配置。

用客户端随便创建一个世界,创建时勾选想用的材质包。
进入后退出存档,在数据文件夹,找到这个世界的文件夹。
找到 world_resource_pack_history.json 和 world_resource_pack.json 并将其拷贝到服务端的 worlds/Bedrock level/ 目录下即可。
如果要所有人强制使用这些材质包,则需要开启强制使用材质的选项 (texturepack-required = true)
BDS系基岩版服务端/拓展工具
其中部分是通过反编译以达成修改的目的, 并不符合 EULA, 请慎用。

BDLauncher 第三方 BDS 插件加载器,已停更
BedrockX 第三方 BDS 插件加载器,已停更
ElementZero 第三方服务端,支持实验玩法和教育版
BDXCore 第三方 BDS 插件加载器,有封装 HOOK API ,适配性强
BDSJSRunner 符合工业标准规范的 BDS 跨版本插件开发解决方案
NetJSRunner .NET 版 JS 加载平台,依赖于 BDSNetRunner
PFJSR NetJSRunner 衍生版
BDSPyRunner python 脚本插件运行平台
IronPythonRunner IronPython 拓展平台,依赖于 BDSNetRunner.
IronLuaRunner IronPython 拓展平台,依赖于BDSNetRunner
IronLuaLoader IronPython 拓展平台,依赖于BDSNetRunner
BDSJavaRunner Jar1.8 加载器
BDSAddonInstaller Add-on/node.js 加载工具
MCscripts 用于备份、更新、安装、警告的系统单元,bash 脚本,聊天机器人
MCBEPlay GUI 版 BDS