解题思路

首先,我的世界官方其实已经把服务器端写好了,只需要找一个能运行它的机器。与此同时,为了能远方的小伙伴都能一起加入,我们还需要一个公网ip。

因此,有两种基本方法:

方法一:

将我的世界服务器直接运行在有公网ip的机器上,可以是云服务器,也可以想办法让运营商给家里的光猫分配公网ip,然后再连机器。
但是我的世界服务器端至少需要2G的内存,也就是说起码得买4G的云服务器,如果去腾讯,阿里或者华为云官网看看就知道这属于是富哥玩法了。
然后和运营商周旋也比较麻烦,所以还是用方法二吧。。

方法二:

将我的世界服务器运行在本地(没有公网ip)的机器上,然后再将服务器运行的端口映射到云服务器的端口上,
小伙伴访问云服务器的端口,云服务器再和那台运行着我的世界服务器的,没有公网ip的机器通信。
只将这个公网ip的云服务器作为一个中转站,那么这个云服务就不再需要那么高的配置,只需要买最便宜的就可以了。

配置Java JDK

我的世界本身是用Java写的,因此服务器也需要一个Java的编译环境

在终端依次输入:

sudo apt update

sudo apt install defult-jdk

完成后输入 java -version 查看当前Java版本

图床

以下是社区的Java版本和游戏版本的关系:

图床

我试过安装 Java 21,但失败了,也就是说目前最新只能玩1.20.4

图床

配置我的世界服务器端

这里我们用fabric启动器,可以支持更多光影和mod:https://fabricmc.net/use/server/

选择1.20.4

图床

建议先创建一个文件夹,作为服务器的目录,不然待会文件可能会散出来:mkdir fabric cd fabric

进到刚刚创建的文件夹后,复制网页下面的指令:

curl -OJ https://meta.fabricmc.net/v2/versions/loader/1.20.4/0.16.7/1.0.1/server/jar

java -Xmx2G -jar fabric-server-mc.1.20.4-loader.0.16.7-launcher.1.0.1.jar nogui

然后会显示:

图床

这个并不是报错,只是要我们同意一下,修改文件夹中的 eula.txt 文件,将 false 改为 true 重复第二条指令即可

图床

然后再执行一下刚才的第二条指令就可以了,但是我们先配置一下端口映射

配置frp服务

基本和之前那篇环境配置的教程中的一致,主要是修改树莓派客户端的localPort的值,改成我的世界服务器默认的25565

图床

注:25565 也可以修改成别的端口号,在 server.properties 中修改 server-port 即可

图床

由于树莓派性能毕竟有限,建议把 view-distance 改成 6 , max-player 改成 5 , max-world-size 设置为 1000(2000×2000地图边界),还有最好把 white-list 也开了,这样陌生人就进不来了(之前就被外国佬进来放过岩浆墙把村庄毁了QAQ)

然后和之前一样,分别开启服务器和客户端的frp

注意要把云服务器的端口开放一下,这里以腾讯云为例:

图床

树莓派默认是没装防火墙的,所以全部端口都是开放的,但是如果装了防火墙 ufw ,记得把端口也开一下

搞定之后就按之前的方法,分别开启frp服务吧

上号

okk,现在万事具备了,回到树莓派的 fabric 文件夹,再次输入

java -Xmx2G -jar fabric-server-mc.1.20.4-loader.0.16.7-launcher.1.0.1.jar nogui

看到 Done! 后,说明世界已经创建成功了

(插句题外话,这条指令有点长,如果嫌麻烦可以写一个shell脚本:

nano begin.sh 粘贴那条指令,然后保存退出。

以后直接用bash begin.sh 可以启动了!)

图床

图床

接下来打开游戏,点击 多人游戏 -> 添加服务器,输入ip:端口号

注意 : 是英文符号!

图床

图床

图床

但是由于刚才为了不被打扰,我们开启白名单,所以会出现:

图床

别急,我们再看到树莓派的服务端,用 whitelist add 用户名 指令将玩家加入白名单

在游戏里再刷新一下,这次就能进入啦!!!

图床

在服务器上,用指令 op 用户名,可以给玩家管理员权限

图床

保存并关闭服务器

在终端输入 stop 即可优雅地关闭服务器

图床

游戏存档都在 world 文件夹内

后台运行

之前挂后台主要用的指令是 nohup ... & , 但是这样的话只能通过 kill 指令把进程杀掉,
无法切换到前台用 stop 保存后删除。因此我们需要一个新的可以将进程重新切回前台的指令:

那就是 screen ! 它可以创建新会话,就算退出xshell也依然存在,并且可以随时切换进入新会话。

输入 screen -S minecraft 先创建一个新的会话,会话名就叫minecraft吧

java -Xmx2G -jar fabric-server-mc.1.20.4-loader.0.16.7-launcher.1.0.1.jar nogui 正常启动服务器

然后,按Ctrl+A再按D,分离screen会话

screen -ls 可查看当前所有screen

screen -r minecraft 重新连接会话

图床

输入 exit 即可退出并删除这个会话

注意,这个 exit 需要连接进入那个会话之后才能删除

如果是想不进入直接删,用指令 screen -S -X -S minecraft quit 即可

游戏截图

这是大一暑假和小伙伴们的美好回忆

最菜就是我了,其他都是mc牢玩家了

图床

图床

图床

图床

图床

图床

图床

图床

图床

图床

图床