我从2025年2月初开始学习搭建MC服务器,到现在也学到了不少知识。以下是我的开服历程,若能对各位有所帮助,实在是我的荣幸。
服务端搭建
常见的服务端
目前MC服务端主要包括:原版、插件端、模组端和混合端四类。
| 类别 | 特点 |
|---|---|
| 原版 | 就和MC原版一样,没有特殊功能 |
| 插件端 | 能加插件,不能加模组 |
| 模组端 | 能加模组,不能加插件 |
| 混合端 | 既能加模组,也能加插件 |
似乎混合端功能更强大,但实际上它的兼容性更差,所以如果想开整合包服务器的话最好还是用模组端。 由于我目前没找到合适的模组代替插件,因此只能用混合端了。
以下是常见的服务端:
| 服务端 | 类别 | 支持 |
|---|---|---|
| Spigot | 插件端 | 全版本 |
| Paper | 插件端 | 全版本 |
| Forge/Fabric/NeoForge | 模组端 | 全版本 |
| Catserver (猫端) | 混合端 | 1.12.2/1.16.5/1.18.2 |
| Mohist (墨端) | 混合端 | 全版本 |
安装 Java 环境
Java环境是MC服务器必备的运行环境。Java有多个发行版,不同的MC服务端对应不同的Java。
| MC版本 | 支持 |
|---|---|
| 1.12 - 1.16 | Java 8 |
| 1.17 - 1.20 | Java 17 |
| 1.21 以上 | Java 21 |
Java可从Oracle官网 下载(最新版需要注册账号才可下载)。如果不在意,也可从镜像站例如Adoptium 下载。
使用.exe或.msi文件安装的Java一般自动配置好了环境变量,如果使用.zip安装Java则需手动配置。
服务端启动流程
首先在网络上下载对应的服务端,通常是一个.jar文件。然后新建一个文件夹,将服务端核心放在文件夹内。
然后新建一个文本文档,在文档内输入java -jar 你的服务端核心名.jar,保存后将文件扩展名改为.bat。之后双击.bat文件,服务端将会运行并且在终端实时输出。这时通常会出现是否同意eula协议,此时须在文件夹内找到eula开头的文件,将其中的false改为true。最后再次启动.bat文件,服务端开启成功。
网络配置
搭建服务器最重要的是配置好网络,核心是确定服务器的IP地址和端口号。
局域网联机
局域网联机最简单,只需知道服务器运行的主机的IP地址即可。
Windows平台:win+r打开cmd,输入ipconfig,查看Wifi(无线连接)或以太网(有线连接)下的IP地址。
Linux平台:命令行输入 ip a 。
什么是局域网?
通俗来说,通过同一个Wifi相连的设备都处于同一个局域网下。连接在同一个局域网下的设备,它们的设备IP地址仅最后一位不同。在同一个局域网下的设备可通过IP地址互相连接。
内网穿透
请在网络上自行查找相关内容。
什么是内网穿透?
内网穿透是通过特定技术,将你的内网(如局域网)地址经服务器映射到公网上的过程。此时一个公网IP地址,如:
frp-xxx.com:xxxxx就等同于你的局域网地址192.168.x.x。
IPv6连接
这是目前成本最低,效果最好的连接方式。
首先必须确保你和你的伙伴都有IPv6访问,然后win+r打开cmd,输入ipconfig,这时应该可以看到一串240e:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx(必须为240e开头,这样才是公网IPv6),这时[IPV6地址]:端口号的形式就是服务器的IP地址。
什么是IPv6?
目前IP技术分为IPv4和IPv6两种。IPv4地址为12个十进制数,每3个数字用“ : ”隔开;IPv6地址为28个16进制数,每4个数字用“ : ”隔开。由此可见,IPv6地址比IPv4多得多,所以每个IPv6地址都可以作为公网使用。
服务器进阶
修改服务器配置
依据服务端核心的不同,修改方法也有所区别。
启动文件.bat
在java -jar 你的服务端核心名.jar中,可在-jar之后加上-XmsAG -XmxBG表示给服务器至少分配A个G的内存,至多分配B个G的内存。
特别的,java可以替换为具体的Java/bin路径。若未指明,默认为最新版的Java。
server.properties
这是所有服务器都具备的配置文件。
1allow-flight=true #是否启用飞行
2allow-nether=true #是否生成下界
3broadcast-console-to-ops=true #是否向管理员发送控制台消息
4broadcast-rcon-to-ops=true
5debug=false #是否开启调试模式
6difficulty=normal #难度设置
7enable-command-block=true #是否启用命令方块
8enable-jmx-monitoring=false
9enable-query=false
10enable-rcon=false
11enable-status=true
12enforce-secure-profile=true
13enforce-whitelist=false
14entity-broadcast-range-percentage=100
15force-gamemode=false #是否强制设置玩家的游戏模式
16function-permission-level=4 #命令等级设置,最高为4,最低为0
17gamemode=survival #游戏模式设置
18generate-structures=true
19generator-settings={}
20hardcore=false
21hide-online-players=false
22initial-disabled-packs=
23initial-enabled-packs=vanilla
24level-name=play #游戏主世界存档名称
25level-seed=
26level-type=minecraft\:normal
27max-chained-neighbor-updates=1000000
28max-players=40 #服务器允许的最多人数
29max-tick-time=60000
30max-world-size=29999984
31motd=智算11班公益养老服(1.4)
32network-compression-threshold=256
33online-mode=false #是否启用在线模式
34op-permission-level=4
35player-idle-timeout=0
36prevent-proxy-connections=false
37pvp=true #是否允许玩家互相攻击
38query.port=25565
39rate-limit=0
40rcon.password=
41rcon.port=25575
42require-resource-pack=false
43resource-pack=
44resource-pack-prompt=
45resource-pack-sha1=
46server-ip= #服务器运行的IP地址,默认留空
47server-port=30067 #服务器运行的端口
48simulation-distance=10 #服务器模拟距离,建议设置为4~6
49spawn-animals=true
50spawn-monsters=true
51spawn-npcs=true
52spawn-protection=0 #出生点保护范围
53sync-chunk-writes=true
54text-filtering-config=
55use-native-transport=true
56view-distance=10 #服务器视野距离,建议设置为4~6
57white-list=false
bukkit.yml
spiogt.yml
安装插件和模组
使用SSH远程连接服务器主机
参见:SSH配置简介
使用MySQL管理玩家数据
对于多个服务器,如果想不同服务器之间共享玩家数据(如权限、经验等),可以使用MySQL数据库。
下面以服务端插件PowerRanks为例进行说明。
- 打开PowerRanks的配置文件,找到关于数据来源的配置。
1...
2storage:
3 type: mysql
4 mysql:
5 host: 127.0.0.1
6 port: 3306
7 database: powerranks
8 username: root
9 password: *******
10 ssl: false
11 verbose: false
12...
将type改为mysql,并配置好端口、用户名和密码。这样在启动时,插件会自动从127.0.0.1:3306端口的root用户读入数据。
-
在MySQL的表中创建新表,命名为
powerranks,此处名称应与配置文件中的database后的名称相同。 -
启动MC服务器,这样Powerranks插件就会自动在MySQL中创建数据表,可以对其进行相关操作。
注意:使用MySQL的数据时,每次启动服务器前应当先启动MySQL客户端,否则插件会报错。