MineCraft 服务器搭建
- MC 服务器的基本知识
- 客户端启动器
- Spigot 服务器搭建
1. MC 服务器的基本知识
转载来源: [ Asterisk | 知乎 ]
- Realms: Mojang 官方推出的出租服务器的服务,服务端一定和官方服务端完全兼容,尽管 Mojang 可以修改它的实现(很贵)
- Vanilla server: 官方服务端,兼容性坠吼(Mojang 是你爸爸)
- Bukkit: 给官服加入插件机制,已停止开发,主要继承者是 Spigot
- Spigot: 给 Bukkit 服务端加入大量优化,速度相当快,大多数第三方服务器都使用这个服务端(CraftBukkit API 现在也是 Spigot 团队维护)
- Paper: 给 Spigot 添加了一些比较激进的优化,应该是基于官方代码的服务端里坠快的
- Forge: 老牌 mod API, 优点就是 mod(这不是一个独立的服务端,但是通常 mod 和原版是不能兼容的,所以把 mod API 也视作一种服务端)
- Cauldron(MCPC+): 相当于给 Spigot 装上了 Forge API, 同时可以用 Bukkit 插件和 Forge mod, 已停止开发(被 DMCA takedown 了)
- KCauldron 是 Cauldron 的一个 fork, Thermos 是 KCauldron 的一个 fork, 都是给 Cauldron 续命的尝试
- Sponge: 打算搞个大新闻的新 mod API(这也不是一个独立的服务端)
- Spout: 一个停止开发的非官方服务端,有很多好玩的特性
- Glowstone 和 Glowstone++: 出现较早的,完成度较高的非官方服务端
- Dragonet: 允许 PC 和 PE 玩家连接到同一个服务器,起初基于 Glowstone++ 开发,后来重写了
- Cuberite: 用 C++ 写的非官方客户端,跑得比谁都快
主要选择目标有两个:
- Spigot:支持插件但不支持 mod,当前大多数服务器的选择,支持 python api
- Forge:支持的 mod 的服务器
选择 Spigot 来安装,如果有机会再装个 Forge 的
2. 客户端启动器
在 Github 上搜一搜,HMCL 是用的最多的
[ HMCL 服务器|Github ]
- 下载 exe 文件
- 创建文件夹放进去(没有安装步骤,本身不是安装包,而是启动器本身)
启动程序,选择离线模式(如果有账号登陆也行)
设置数据文件夹(默认在 C 盘)
下载想要的游戏版本
- 启动游戏(如果是离线模式,而且对方服务器开启了正版验证则会连接失败)
3. Spigot 服务器搭建
3.1 准备一个云服务器(略)
3.2 安装服务器(基于 apt-get,其他包管理工具需要改成对应命令)
参考链接:
以下命令基本都需要 root 权限,如果忘记了就清除中间产物后加上 sudo 重新运行
更新系统
1
sudo apt-get update && sudo apt-get upgrade
安装 git
1
sudo apt-get install git
安装 java
1
sudo apt-get install openjdk-8-jre-headless
开放指定端口
1
2.如果您正在使用IP tables防火墙(如“ 保护服务器”中所示),请在iptables规则中添加例外:
sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT获取编译工具
1
2
3
4
5
6
7
8
9两条下载命令等价
curl -o BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
wget -O BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
运行完之后,在合适的地方新建一个minecraft文件夹
建立目录minecraft
\---server
\---build
把 BuildTools.jar 复制到build文件夹中编译
1
2
3
4
5
6
7
8
9
10
11这一步很重要,腾讯云上的步骤没有这一步,失败了...
这一步的作用时把git的换行符自动转换恢复为默认
git config --global --unset core.autocrlf
sudo java -jar BuildTools.jar
编译的时候时可以选择版本的
默认为最新版本,如下命令的 --rev latest可以省略
java -jar BuildTools.jar --rev latest
其他版本命令形如:
java -jar BuildTools.jar --rev 1.16.1运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21把生成的形如 spigot-1.16.1.jar 文件放入 server文件夹
下述命令为直接运行,分配的空间适用于 2GB 内存的机器
java -XX:MaxPermSize=1024M -Xms512M -Xmx1536M -jar spigot-1.16.1.jar
第一次运行必定失败
会给出一个文件,要求同意其许可
[INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
找到生成的 eula.txt 文件,同意许可
eula=true
再次运行就可以成功了
但是需要再修改一个东西,以关闭正版验证
在 server 文件夹中找到server.properties 修改 online-mode
online-mode=false
运行的时候,服务器需要gui界面,会自动发送x11请求(需要用专门软件接受)
一般可以通过参数把这个关掉
所以最终的运行命令为:
最大栈空间1GB 初始堆空间512MB 最大堆空间1536MB 指定关闭GUI界面
sudo java -XX:MaxPermSize=1024M -Xms512M -Xmx1536M -Djava.awt.headless=true -jar spigot-1.16.1.jar从服务器的控制台打开端口
运行
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
30screen 命令简介:
用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。
简单来说就可以看作一个命令行界面的终端切换软件
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
-A 将所有的视窗都调整为目前终端机的大小。
-d <作业名称> 将指定的screen作业离线。
-h <行数> 指定视窗的缓冲区行数。
-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称> 恢复离线的screen作业。
-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s 指定建立新视窗时,所要执行的shell。
-S <作业名称> 指定screen作业的名称。
-v 显示版本信息。
-x 恢复之前离线的screen作业。
-ls或--list 显示目前所有的screen作业。
-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
以下命令很可能需要管理员权限,即需要sudo
强制创建新终端并离线(创建名为minecraft的终端任务)
screen -dmS minecraft
列出所有终端任务
screen -ls
关闭终端任务
screen -X -S minecraft quit
切换至终端任务(切换至MC服务器控制台)
screen -r minecraft所以最终的运行解决方案为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17在 server 文件夹中建立 wrapper.sh
!/bin/bash
sudo java -XX:MaxPermSize=1024M -Xms512M -Xmx1536M -Djava.awt.headless=true -jar spigot-1.16.1.jar
在 server 文件夹中建立 run.sh
!/bin/bash
sudo screen -dmS minecraft ./wrapper.sh
在 server 文件夹中建立 stop.sh
!/bin/bash
sudo screen -X -S minecraft quit
运行的时候,切换命令行到 server 文件夹
sudo ./run.sh
停止服务器的时候,切换命令行到 server 文件夹
sudo ./stop.sh
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 遗世の私语!