Minecraft服务器搭建

1.前往官网下载服务器jar包

官网jar包下载地址, 需要注意的是1.16.5以上的版本不支持JAVA8, 如打算使用

高版本的服务器包请提升linux服务器上的JAVA版本

image-20221020162834802-1666254672566

2. 创建Minecraft服务器的目录

1
mkdir -p /opt/minecraft/{jars,instances}

image-20221020163708494

3. 将下载好的服务端jar包上传到jars文件夹下

image-20221020163827673

4. 创建minecraft服务启动文件

​ ①创建服务产出文件存放目录

1
mkdir -p /opt/minecraft/instances/survival

image-20221020164129623

​ ②创建服务启动文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
第一步: cd /lib/systemd/system/
第二步: 创建minecraft-survival.service文件
第三步: 将下面代码复制到minecraft-survival.service文件中

[Unit]
Description=Minecraft Server
Wants=network.target
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/minecraft/instances/survival
ExecStart=/usr/bin/java -Xms3G -Xmx4G -jar /opt/minecraft/jars/server.jar nogui
RestartSec=30
Restart=on-failure
KillMode=process
KillSignal=SIGINT
SuccessExitStatus=130
StandardInput=null

[Install]
WantedBy=default.target

5. 启动服务以及相关命令

1
2
3
4
5
6
7
8
9
第一步: 同意Minecraft协议
echo "eula=true" > /opt/minecraft/instances/survival/eula.txt

第二步: 允许minecraft-survival.service进行服务
systemctl enable minecraft-survival.service

第三步: 启动服务
systemctl start minecraft-survival.service

image-20221020165148994

注意启动online-mode=false,让盗版玩家也能进(我就是盗版玩家捏)

6. 服务相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
启动服务:
systemctl start minecraft-survival.service

查看服务器允许状态
systemctl status minecraft-survival.service

停止服务:
systemctl stop minecraft-survival.service

重启服务:
systemctl restart minecraft-survival.service

查看服务器启动日志
journalctl -xe

Minecraft服务器配置

配置文件是位于/opt/minecraft/instances/survival的server.properties文件

官方配置

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
spawn-protection=16
/* 通过将该值进行(x*2)+1的运算来决定出生点的保护半径。设置为0将不会禁用出生点保护。设置为0将会保护位于出生点的1x1方块区域,设置为1将会保护以出生点为中心的3x3方块区域。设置为2会保护5x5的方块区域,设置为3将会保护7x7的方块区域,以此类推。 这个选项只会在第一个玩家进行服务器时生成。如果服务器没有设置OP,这个选项将会自动禁用。 */

max-tick-time=60000
/* 设置每个tick花费的最大毫秒数,超过该最大毫秒数看门狗将停止服务器程序并附带上一些信息。 */

query.port=25565
/* 设置监听服务器的端口号 */

generator-settings=
/* 本属性质用于自定义超平坦世界的生成。详见超平坦世界和自定义了解正确的设定及例子。 */

force-gamemode=false
/* 是否强制玩家以默认游戏模式游玩 */

allow-nether=true
/* 是否允许玩家前往下界 */

enforce-whitelist=false
/* 在服务器上强制执行白名单。当启用后,不在白名单中的用户将在服务器重新加载白名单文件后从服务器踢出。 */

gamemode=survival
/* 游戏模式,包括survival(0)生存模式、creative(1)创造模式、adventure(2)冒险模式(仅在12w22a之后,或正式版1.3之后可用)、spectator(3)旁观模式(仅在14w05a之后,或正式版1.8之后可用) */

broadcast-console-to-ops=true

enable-query=false
/* 是否允许使用GameSpy4协议的服务器监听器。它被用于收集服务器信息 */

player-idle-timeout=0
/* 玩家n分钟无任何操作将被自动踢出,0为关闭自动踢出 */

difficulty=easy
/* 定义服务器的游戏难度(例如生物对玩家造成的伤害,饥饿与中毒对玩家的影响方式等),包括和平(peaceful)(0)、简单(easy)(1)、普通(normal)(2)、困难(hard)(3)如果设置了旧的数字ID,则会自动转化为英文的难度名称 */

broadcast-rcon-to-ops=true

op-permission-level=4
/* 设定OP的权限等级
1 - OP可以无视重生点保护。
2 - OP可以使用单人游戏作弊命令(除了/publish,因为不能在服务器上使用,/debug也是)并使用命令方块。命令方块和领域服服主/管理员有此等级权限。
3 - OP可以使用几乎所有多人游戏限定的命令(除第4级专用命令)
4 - OP可以使用所有命令,包括/stop、/save-all、/save-on和/save-off。 */

pvp=true
/* 是否允许玩家互相伤害 */

snooper-enabled=false
/* 自1.3正式版之后,一旦启用,将允许服务端定期发送统计数据到<http://snoop.minecraft.net. *>/

level-type=default
/* 地图生成类型,包括
DEFAULT - 标准的世界带有丘陵,河谷,海洋等
FLAT - 一个没有特色的平坦世界,适合用于建设
LARGEBIOMES - 如同预设世界,但所有生态系都更大(仅快照12w19a,或正式版1.3之后可用)
AMPLIFIED - 如同预设世界,但世界生成高度提高(仅快照13w36a,或正式版1.7.2之后可用)
CUSTOMIZED - 自快照14w21b以来,服务器也支持自定义地形。使用方法是在generator-settings贴上代码。 */

hardcore=
/* 极限模式(一旦启用,玩家在死后会自动被服务器封禁,进入spectator模式),会覆写设定的游戏难度 */

enable-command-block=false
/* 是否启用命令方块 /

max-players=20
/ 服务器同时能容纳的最大玩家数量,可输入0~2147483647,服务器的OP具有在人满的情况下强行进入服务器的权力,找到在服务器根目录下叫ops.json的文件并打开,设置你要突破人数限制的OP下的bypassesPlayerLimit选项为true即可(默认值为false),这意味着OP将不需要在服务器人满时等待玩家离开再加入,过大的数值会使客户端显示的玩家列表崩坏。 */

network-compression-threshold=256
/* 默认会允许n-1字节的数据包正常发送, 如果数据包为 n 字节或更大时会进行压缩。 */

resource-pack-sha1=
/* 资源包的SHA-1值,必须为小写十六进制,建议填写它,这还没有用于验证资源包的完整性,但是它提高了资源包缓存的有效性和可靠性。 */

max-world-size=29999984
/* 最大世界范围(半径),比如,1000即为2000x2000方形地图 */

function-permission-level=2
/* 设置命令的权限等级(1-4),权限等级2可以使用/reload和/forceload,可以参考op-permission-level */

rcon.port=25575
/* 设置远程访问的端口号 */

server-port=25565
/* 服务器端口 */

server-ip=
/* 服务器地址,默认留空即可 */

allow-flight=false
/* false - 不允许飞行。悬空超过5秒的玩家会被踢出服务器。也会包括使用三叉戟的激流附魔、时间很长的自由落体或是网络卡顿导致的误判。

true - 允许飞行。玩家得以使用飞行MOD飞行。 */

level-name=world
/* 世界的名字(同时也是存放世界文件夹的名字),更改名字会让服务器尝试加载不同文件夹中的地图 */

view-distance=10
/* 它决定了服务端的可视距离,设置服务端传送给客户端的数据量,也就是设置玩家各个方向上的区块数量 (是以玩家为中心的半径,不是直径)。 */

resource-pack=
/* 可输入指向一个资源包的URI。玩家可选择是否使用该资源包。注:下载到的服务器资源包将保存在.minecraft\server-resource-packs下。 */

spawn-animals=true
/* 是否生成动物 */

spawn-monsters=true
/* 决定攻击型生物(怪兽)是否可以生成 */

spawn-npcs=true
/* 是否生成npc */

white-list=false
/* 服务器的白名单,当启用时,只有白名单上的用户才能连接服务器。白名单主要用于私人服务器,例如相识的朋友等。
- OP会自动被视为在白名单上。所以无需再将OP加入白名单。
false - 不使用白名单。
true - 从 whitelist.json 文件加载白名单。 */

rcon.password=
/* 设置远程访问的密码 */

generate-structures=true
/* 是否生成建筑(包括村庄等),注:即使设为 false,地牢和下界要塞仍然会生成 */

max-build-height=256
/* 玩家能够建造的最大高度。地形生成算法并不会受这个值的影响。 */

online-mode=true
/* 服务器是否开启在线验证(仅允许正版玩家连接),谨慎切换,可能导致玩家数据丢失 */

level-seed=
/* 自定义世界种子 */

use-native-transport=true
/* 是否使用针对Linux平台的数据包收发优化 */

prevent-proxy-connections=false
/* 如果服务器发送的和Mojang的验证服务器的ISP/AS不一样,玩家将会被踢出
true - 服务器将会禁止玩家使用虚拟专用网络或代理
false - 服务器将不会禁止玩家使用虚拟专用网络或代理 */

enable-rcon=false
/* 是否允许远程访问服务器控制台 */

motd=A Minecraft Server
/* 玩家在多人游戏服务器列表中看到的服务器信息,显示于名称下方,那些花里胡哨的东西请参考官方的样式代码 */

announce-player-achievements=false
/* 玩家获得成就时是否在服务器中进行显示。在1.12之后的版本中,announce-player-achievements属性被移除。如果已经在服务器配置文件中设置了此条属性,则游戏规则announceAdvancements将自动更新,随后从文件中删除此条属性。 */

隐藏配置

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
verify-names = 检测昵称,第一个重名昵称将被kick
onlineMode = 在线模式
autoSave = 自动保存
autoSaveMins = 服务器自动保存时间(单位:秒)
autoBackup = 自动备份
autoBackupMins = 自动备份时间(单位:秒)
keepBackupHours = 保留备份时间,超过将删除备份(单位:天)
autoRestart = 自动重启(服务端检测到错误时)
autoRestartMins = 自动重启时间(单位:秒)
exitOnFailure = 退出失效(未知)
port = 端口
internalPort = 内部端口
rconPort = 远程端口
rconPassword = 远程密码
useSMPAPI = 使用多核处理
c10tArgs = 是用C10T参数(好像是10进制的意思)
c10tMins = C10T处理时间(单位:秒)
defaultGroup = 默认组(此为Steam组,盗版无视)
useSlashes = 使用斜杠语法(默认dots语法)
memory = 内存(及服务端最高吃多少内存)
useMsgFormats = 使用信息格式(未知)
msgTitleFormat = 信息标题格式
msgFormat = 信息格式
localChatRadius = 当地信息交互(AAA协议)
debug = 调试模式
alternateJarFile = 备用的jar文件(建议留空)
guestsCanViewComplex = 来宾可以查看(Complex好像是函数)
ipAddress = IP地址(建议留空)
javaArguments = Java参数

设置OP权限

1
2
3
4
5
6
7
8
9
10
11
1. 打开/opt/minecraft/instances/survival/usercache.json 

2. 将用户ID与其对应的UUID设置为OP
[
{
"uuid": "a7e092e2-60aa-3942- 9496-673ce0df233b
",
"name": "Crisp",
"level": 4
}
]