👆关于标题: Better Together Update,是我的世界最近一次的大更新,更新之后的版本又叫我的世界基岩版(Minecraft Bedrock Edition),打通了Windows 10,iOS,Android,Xbox,Nintendo Switch平台(离群索居),可以跨平台联机游戏。
⚠⚠⚠**高能预警,本教程使用的阿里云学生机带宽最大只有5M,最多只能保证同时3人联机,第4个玩家登录会直接炸服。如果你对游戏人数有要求务必注意此限制。**⚠⚠⚠


想玩Minecraft了

突然又想玩我的世界。可是每次和朋友一起玩,都很艰难——联机体验实在太差。即使用官方推出的付费领域联机,也是各种延迟卡顿掉线。而且刚看了领域价格,10人180天的价格暴涨到了334RMB,微软我(╯‵□′)╯︵┴─┴

那就干脆自建服务器?毕竟我也是一窍不通,硬刚出RUST和Killing Floor游戏服的人,要有信心啃下Minecraft。

很久以前有了解过民间自制的PE版(Pocket Edition)服务器,因为不是官方版本,所以有很多缺陷,比如没有生物(没有生物咋玩的下去啊,纯建造吗👀)。查了下,目前架设服务器的方法有NukkitPocketMine两个,不过考虑到我之前经营了很久的存档,我还是决定找官方工具。

终于我在官网的犄角旮旯里找到了基岩版开服工具(进入官网后点右上角的菜单>试用及下载>下载我的世界服务端软件就能看到,这谁找得到啊🤷‍♀️)。既然有了官方的支持,存档继承问题就不需要再担心,直接开干。

购买服务器

我用的是阿里云学生机(省钱💸)。为了保证多人游戏体验,我选择带宽更大的轻量应用服务器。根据官网提示选择使用Ubuntu的系统镜像,地域选择华东,之后付款结算。

使用SSH连接服务器

结算后,就可以去管理控制台开启自己的服务器了。你可以直接使用浏览器远程连接服务器进行之后的操作。但是用客户端更方便嘛,接下来我用Termius来做示范(推荐一下Terminus,win10微软商店内就可以下载,选中即复制,右键即粘贴,轻度使用效率很高)。
使用SSH客户端连接服务器,要先在阿里云控制台左侧的服务器维运下的远程连接里,选择第三种方式客户端使用账号密码进行连接设置密码。设置好会提示重启服务器。

如果你也用Termius连接服务器,那就打开它,新建服务器连接 + NEW HOST

Adress中填写你的服务器IP,打开SSH开关,在Username中填rootPassword中填写你刚刚设置的的密码,完成后点SAVE

然后在服务器列表中,右键你新建的服务器,选择第一项Connect via SSH,即可连接。

第一次连接服务器时会跳出提示框,选择YES就好。

插曲(升级系统)

………………以下可略过………………
根据说明,我们只需要把服务端软件下载下来解压,然后运行即可。但是我遇到了非常恼人的问题。无论我怎样尝试,都会出现错误:

搜索了解了一下大概是缺少相关文件的问题。那就把缺少的文件补齐了呗?于是尝试修复该错误。但无论怎么尝试都失败了,感觉自己好菜。
我琢磨着这么多的组件都是版本过低,这系统镜像真的非常老旧啊。想到这里决定尝试一下用高版本系统镜像来建服。
由于阿里云轻量服务器只提供16.04版本的Ubuntu且不支持自定义,我就去Vultr上开了一台18.04的。一顿操作:

果然是系统镜像的问题。如何解决呢?

继续搜索,在我的世界中文论坛里发现了一篇帖子,非常符合我现在的状况。同样的学生机,同样的错误,他的解决方法是把文件从18.04镜像中提取出来,放到16.04中。所谓缺啥补啥👍好方法。然而我照着帖子鼓捣了半天,还是报错了。
好菜啊,做到这份上依然不行。

………………以上可略过………………

但是我突然有了灵感,既然高版本的系统可以建服,那干脆就把系统直接升级。根据这篇博客进行如下操作(升级比较漫长,需要一点时间,以下截图经过缩减,实际操作没有那么紧凑)。
获取升级:

sudo do-release-upgrade

升级过程中会有需要确认的环节,请无脑按y或回车:

遇到这个画面请选择install the package maintainer's version

之后还是一顿无脑按y

升级完成后重启系统;
由于系统重新启动,会断开SSH连接,重新连接后便进入了高版本的Ubuntu(掌声👏)。

开服

为了以后方便管理先新建一个文件夹,命名为minecraft:

mkdir minecraft

打开文件夹:

cd minecraft

接下来需要获取服务端软件。先到官网上复制服务端软件的下载链接,

然后在SSH客户端内输入(不用加<>括号):

wget <你复制的链接>

看看下载了啥:

ls


这说明服务端软件已经下载好了,准备解压。获取解压工具:

apt install unzip

跳完一段代码后,就可以解压压缩包了(压缩包名字就是红字):

unzip <压缩包名字>

看一下解压出来啥:

ls


可以看到该有的都有了,先用微软给的命令尝试运行,看会不会报错:

LD_LIBRARY_PATH=. ./bedrock_server

如果最后显示server started,说明服务器运行成功。

服务器设置

成功了但没结束,先输入stop关闭服务器。因为还没有设置服务器的相关属性,例如难度,地图等等。这些需要到server.properties文件中更改:

nano server.properties

打开以后,将光标停移动你想要更改的属性上根据提示更改。
我把服务器名改成了Entertainment City
将难度调整为hard
将最大同时在线人数调整为53毕竟是只只有5M带宽的小鸡
将可视区块数量调整为16,这是为了缓解服务器的运行压力,毕竟是只配置不高的小鸡

设置好参数就可以退出了。Ctrl+X退出编辑器,这时会询问你是否保存更改,按Y确认,然后回车退出编辑。

⚠注意:如果你不需要上传存档,直接进入最后的开服环节

上传地图

服务器是开了,但是地图呢?原来的娱乐城殖民地花了我和朋友大量的时间来建设,如果这个服务器不能继承存档那就太糟糕了。

………………以下可略过………………
我想着服务器一定会有一个用来存放地图的文件夹,这样直接把地图上传到里面就OK。
按照这个思路,先用ls命令看一下服务器运行后都有啥文件。

果然有个worlds文件夹,打开看了一下,有个Bedrock level;再打开,是一堆文件,看不出啥名堂。我不甘心,毕竟也是玩了几年的存档。我想到世界导出后会得到一个.minecraft文件,于是就搜搜这个文件后缀。在Minecraft Wiki里我找到了相关资料。
根据资料,我导出我的一个本地存档,得到一个.mcworld文件(真奇怪,换了个后缀名),把后缀改为.zip变成压缩包。发现压缩包内的文件和Bedrock level里的如出一辙,唯独多了一个world_icon.jpeg文件,是世界缩略图。

到这一步,地图上传的操作基本明朗,只要把这些文件放到worlds文件夹就成。
为了指定开启我的本地存档,我重新打开server.properties,看到一个属性:
level-name=Bedrock level
而在worlds文件夹中默认生成的就是Bedrock level。用ls命令查看该文件夹,有个levelname.txt,使用nano命令打开后,内容为Bedrock level

………………以上可略过………………

所以上传本地地图的思路便是,把本地的.mcworld地图文件后缀改成.zip,得到一个压缩包;上传到worlds文件夹并解压;最后把server.properties中的level-name属性改为本地地图levelname.txt中的内容即可。

如果你需要自定义你的存档名称,将接下来步骤里的Entertainment City全部替换成你自己的名字就好。
先导出本地存档,得到Entertainment City.mcworld文件,然后把后缀改为.zip,变成压缩包。
解压这个压缩包,打开levelname.txt,把里面的内容改为Entertainment City,然后重新压缩成Entertainment City.zip。

接下来就是想办法把Entertainment City.zip上传到服务器中。如果你刚刚使用Termius,(强烈建议)注册账号就可以限时使用SFTP功能,直接把压缩包上传到服务器的worlds文件夹中(或者你使用其他支持SFTP功能的客户端也可以):
点击左侧的SFTP,然后在最右侧点击SELECT HOST,选择之前保存的服务器(例如我是Minecraft);

在左侧的本地文件浏览器内选中之前编辑的存档压缩包(为了方便你可以先把压缩包扔到C盘),在右侧定位到worlds,然后把右侧的Bedrock level文件夹给删了,并新建一个Entertainment City文件夹;

在右侧进入新建的文件夹,在左侧选中之前编辑的存档压缩包,点击Actions选择Copy to target directory

回到SSH窗口中,进入新建的Entertainment City文件夹,并解压刚刚上传的存档压缩包:

cd minecraft/worlds/'Entertainment City'
unzip 'Entertainment City.zip'

回到minecraft文件夹中:

cd ../..

重复之前编辑server.properties的步骤,把levelname属性改成之前levelname.txt中的内容。

编辑完保存后就可以进入最后的环节了。

再次开服

首先用官网给的命令启动服务器:

LD_LIBRARY_PATH=. ./bedrock_server

理论上服务器已经建好了,但是根据我的世界中文论坛一篇开服帖,断开SSH连接服务器就会关闭。所以需要用Screen命令让它在后台运行。Screen呢,差不多就是一个窗口管理器,可以把当前正在运行的Minecraft服务器命名后保存起来。比如我把当前的服务器保存到一个名为mc的窗口里,输入:

screen -S mc

之后就可以安心断开SSH连接。如果以后需要找回这个窗口,只需要输入:

screen -x mc

就可以重新回到mc窗口,找到正在运行的服务器。
2019-3-14 更新
其实还有最后一步,在控制台找到防火墙选项,然后点击右上角的添加规则

然后添加两条规则,分别为自定义 TCP 19132自定义 UDP 19132

想致富,先撸树

终于建好了服务器,那么就直接上游戏看看效果如何。打开我的世界,点击游戏,在服务器一栏里,选择添加服务器

然后在弹出的窗口,服务器名称可以随意填写,服务器地址填入你阿里学生机的IP地址,端口没有改动的话就默认保持不变。

填好后就可以开始游戏了。



开始撸树吧!


参考链接
Nukkit
PocketMine
Nukkit三步开服教程
基岩版开服工具
Bedrock Dedicate Server on Linux won't start
Ubuntu/Debian apt-get 404 Not Found Package Repository Errors,无法找到包的错误
Ubuntu开基岩服官方教程(学生机替换文件)
阿里云学生机
阿里云服务器配置并安装Ubuntu Server 18.04 LTS
Minecraft 基岩版 Ubuntu服务器搭建(阿里云)
server.properties Minecraft Wiki
.minecraft Minecraft Wiki
linux 技巧:使用 screen 管理你的远程会话


  • 2019-3-14:添加防火墙规则。
最后更新于:
2021.08.30