树莓派搭建Minecraft服务器
解题思路
首先,我的世界官方其实已经把服务器端写好了,只需要找一个能运行它的机器。与此同时,为了能远方的小伙伴都能一起加入,我们还需要一个公网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牢玩家了