MC 服务器架设笔记
本文最后更新于 2023年5月26日 下午
LazyCraft 的架设笔记
序:
我也算是个 Minecraft 的老玩家了
疫情期间,大概是2020年中,我在自己电脑上开了个和朋友们一起玩的服务器(主要是闲的蛋疼),名为 LazyCraft
这篇笔记主要是把这些年来在开服过程中学到的东西都记录一下,对其他人有没有帮助不知道
但我不希望把学到的东西都忘掉
关于 LazyCraft:
此服务器运行于 Minecraft Java 原版服务端之上,附带一些优化 Mod 但并无添加非原版物品
服务器共有俩个子服,玩生存的 smp 以及镜像的创造服 cmp
此服务器的结构主要是在参考 TIS,是另外一个非常厉害的生电服
LazyCraft 的架构:
这是 LazyCraft 目前的架构,仅供参考:
flowchart LR
subgraph Client
A(Minecraft Java)
B(Minecraft Bedrock)
end
A --> C
B --> D
C & D --> E
subgraph Server
C["Java port"]
D["Bedrock port"]
E{"Bungeecord + geyser"}
F["smp + floodgate"]
G["cmp + floodgate"]
E <--> F & G
end
注:阅读本文需要一定的电脑基础以及英文阅读能力,不懂的地方建议多查文档或者 Wiki
架构以及搭建教程:
单个服务端搭建:
原版服务端:
这是一个最基础的服务器,后面的任何升级都是基于此
-
首先,你需要为服务器创建一个文件夹:
- 方便后续理解,这里命名为
myserver
- 这个文件夹最好放在 HDD 里,因为服务器将会长期读写,不建议 SSD
- 请记住要为这个文件夹预留足够空间
- 方便后续理解,这里命名为
-
下载
server.jar
或者
-
从 Minecraft 官方启动器里,点击
Installations
里的New installation
-
在
VERSION
一栏的右侧找到SERVER
字样的按钮 -
点击下载
-
-
把刚刚下好的
server.jar
放到你的服务器文件夹里- 此时路径应是
.\myserver\server.jar
- 此时路径应是
-
执行
server.jar
- 双击,或
- 在服务器文件夹路径执行
1
java -Xmx2G -jar server.jar
-
此时应该没有任何反应,并且你会发现服务器文件夹里生成了一些文件
-
生成的文件中应该包括以下内容:
libraries
,Minecraft 服务器的库logs
,服务器日志versions
,Minecraft 服务器版本eula.txt
,Eula 协议server.jar
,Minecraft 服务端本体server.properties
,服务端选项
-
-
用文字编辑器打开
eula.txt
- 跟随里面的指示把
eula=false
改为eula=TRUE
- 不改的话服务端将无法启动
- 跟随里面的指示把
-
再次执行
server.jar
- 应该会弹出来一个后台界面
- 当后台界面的日志里出现
Done
字样,表示服务器启动成功
此时服务器文件夹目录结构应如下:
1 |
|
-
至此,最基本的服务器已经部署完毕 o( ̄▽ ̄)d
-
如何连接服务器:
- 考虑这部分篇幅较长,故暂不放在这 (;´д`)ゞ
- 以后可能会开新博文来写有关这部分的东西(咕~
- 又或者,在此文的最后一段加上(咕咕~
Fabric 服务端:
我想给服务器来点优化怎么办?
这时候你就需要嵌套个 Fabric 服务端 ˋ( ° ▽、° )
Fabric 服务端可以为你的服务器添加 Mod,想玩一些辅助 Mod 或者想给服务器添加优化的话建议加上
原版:
flowchart LR
a("client")
b["vanilla server"]
a --> b
有 Fabric 服务端:
flowchart LR
a("client")
subgraph Fabric
direction RL
b["vanilla server"]
c["mods"]
c -- With Fabric --> b
end
a --> Fabric
由于 Fabric 是嵌套类的,所以你需要准备一个原版服务端
-
安装
fabric-installer
- 和在客户端安装 Fabric 一样,前往Fabric 官网下载一个
fabric-installer
- 和在客户端安装 Fabric 一样,前往Fabric 官网下载一个
-
启动并安装 Fabric 服务端
- 启动刚刚下载好的
fabric-installer
- 和安装客户端不同,请先到 Installer 的左上角选择
服务端
- 选择需要的游戏版本以及加载器版本(此处请留意 mod 的兼容性)
- 安装位置请选择服务器文件夹,这里还是用
myserver\
做演示 - 请确保安装的位置和
server.jar
是处于同一个
- 启动刚刚下载好的
-
Fabric 服务端安装完成
- Fabric Installer 应该会弹出来一个成功界面
- 可以在这里选择
生成启动脚本
此时服务器文件夹目录结构应如下:
1 |
|
多了些文件有没有发现
-
启动服务器
- 不能直接运行
server.jar
,不然不会启用 Fabric - 同路径执行另外一个
.jar
文件,应该是叫做fabric-server-launch.jar
,或 - 执行
1
java -Xmx2G -jar fabric-server-launch.jar nogui
-
日志显示
Done
字样,即为成功
- 不能直接运行
-
至此,Fabric 服务端部署完毕 ╰( ̄ω ̄o)
服务端控制工具:
注* 此处非必须
单单是一个服务端我觉得不够,还需要一些插件来丰富游戏体验
在不影响原版服务端做为前提,这里我推荐 MCDR (五毛一条,记得删括号)
https://github.com/Fallen-Breath/MCDReforged
如何部署等问题都能在他们的文档里解决,这里就不过多叙述
为啥我会选择 MCDR :
除了提升游戏内的体验,游戏外的管理也是非常的不错
能很方便的解决你想要的刁钻小功能
一些插件能提升游玩体验,例如广播坐标、坐标记录器、聊天计算器、每日一句等等
这些功能都是可以通过其他方式做到的,加个 mod 就行了
但是有另外一些功能,用 mod 实现还是没那么好,例如存档备份以及回档,同步生存服区块至镜像服等
这些种种功能都是靠插件实现的,这些插件的开发难度非常低,上限却非常高
也就是说当你想到一个刁钻的想法,几乎没人去做,在经过简单的编程下就能实现了
你也可以经过长时间的研磨,把这个插件的功能做到非常强大
这些都是我个人认为的好处,实际上论实用程度还是因人而异
不管怎样,用了这么久的 MCDR,还是觉得有必要推荐一下的 (。・∀・)ノ゙
多个服务端搭建:
一个服务器我看还不够,那就开多几个吧 §(* ̄▽ ̄*)§
LazyCraft 原本是只有一个 smp (生存服),我在深思熟虑之后决定开多一个镜像创造服(cmp)
其实开多一个服很简单,主要还是重复上面的步骤,只不过就要在 server.properties
里面把端口号改改就行了
-
先重复上面的步骤开多一个服
-
打开
server.properties
并找到server-port=
-
把后面的端口号改成和第一个服务器不一样即可
请确保新的端口号未被占用
-
启动服务器,搞腚(
多服务端互联(BungeeCord):
换个服务器就要退出再进入,麻不麻烦,直接在游戏里打个指令不久好了吗  ̄へ ̄
有个叫做 BungeeCord 的玩意,它可以直接在游戏内连接不同的服务器,不再需要退回服务器列表
这个东西原本应该是给 Spigot 服务端用的,不过他也支持原版服务端,对于多子服的服务器就很方便
如何架设:
-
在你的服务器文件同级为 BungeeCord 新建一个文件夹:
-
为后续理解,这里命名为
bungeecord
-
此时目录结构应该如下:
1
2
3
4|-- serverdir\
|-- bungeecord\
|-- myserver\
|-- ... -
-
前往 BungeeCord 的 Jenkins 并下载最新的 Artifact:
-
在
Last Successful Artifacts
那部分点击BungeeCord.jar
即可下载 -
只用下载
.jar
文件足矣
-
-
下载完后,把
BungeeCord.jar
放到刚刚新建的文件夹里:- 这里作为演示把
BungeeCord.jar
放到bungeecord
里面
- 这里作为演示把
-
双击执行
BungeeCord.jar
:-
此时它会在文件夹里生成一堆文件
-
此时你的 BungeeCord 目录应该如下:
1
2
3
4
5
6
7
8
9
10
11
12
13|-- serverdir\
|-- bungeecord\
| |-- BungeeCord.jar
| |-- config.yml
| |-- locations.yml
| |-- modules.yml
| |-- proxy.log.0
| |-- proxy.log.0.lck
| |-- modules\
| | |-- ...
| |-- plugins\
|-- myserver\
|-- ... -
-
看到这么多文件,先别慌,现在唯一需要做的就是配置
config.yml
,其余文件基本上都不会用到 -
配置
config.yml
:详细配置请参考 BungeeCord Wiki ,内容实在是太多太多了,这里就只讲些我觉得重要的项目
-
online_mode
可按照自己需求开或者关 -
servers
请填写你的子服名字以及配置,有多少个服就写多少个:- 举个例子,我有俩个服,位于端口
25565
的 smp ,以及位于25585
的 cmp :
1
2
3
4
5
6
7
8
9server:
smp: # 服务器名称,***十分非常建议***使用 lowercase
motd: This is the smp server # 服务器的 motd
address: 127.0.0.1:25565 # 子服的 IP 以及端口号
restricted: false # 是否为限制(开限制的服务器只有有权限许可才能进入)
cmp: # 请***记得使用*** lowercase
motd: This is the cmp server # 同上
address: 127.0.0.1:25585 # 同上
restricted: false # 同上 - 举个例子,我有俩个服,位于端口
-
listeners
,监听端口:-
query_port
,你将通过这个端口访问服务器如果
query_port
填25577
,那连接服务器时就要填写{服务器 IP}:{25577}
-
priorities
,填写优先子服(刚刚的服务器名称),如果启用force_default_server
的话每次进入就会默认是这个子服 -
force_default_server
,是否启用默认服务器,启用的话每次加入都会是指定服务器, 不启用则每次加入都是上次退出的服务器 -
bind_local_address
,默认开启,除非你的系统有多 IP 地址,通常不会动这个 -
host
,默认0.0.0.0:25577
,表示 BungeeCord 会在哪个 IP 和端口上运行,这个也通常不用动
-
-
-
配置子服
server.properties
:使用 BungeeCord 的话原版子服必须要关掉
online-mode
,不然无法使用(BungeeCord 本身就只是给 Spigot 用的,想使用原版端只能做些妥协 ㄟ( ▔, ▔ )ㄏ)
-
将 所有子服 的
online-mode
设置为false
:-
这不代表关闭了正版验证,只是一旦使用了 BungeeCord 就只能关掉,不然无法加入游戏
-
无需担心关掉正版验证后的皮肤加载问题,只要是通过 BungeeCord 连接的都能正确显示皮肤
-
-
搞腚 ヾ( ̄▽ ̄)
-
连接
启用 BungeeCord 后就不要直接使用原本服务端的端口来连接了,否则会造成一系列问题例如皮肤加载等
-
如需连接就要使用 BungeeCord 的端口,默认就是
25577
-
连接 IP :
{本机 IP}:{25577}
-
(之后可能如果有空的话应该大概会出一个有关 BungeeCord 的详细教程以及一路来踩的坑
(先鸽了,拜拜
跨版本连接:
不同 Java 版本:
玩多了都知道,装了亿堆优化 Mod 以及各种原因的服务器更新是个非常蛋疼的事
服务器版本更新不一定跟得上客户端更新,何况 Mojang 还经常来些小更新(
.1 .2 .3
)运维要死人力 (ノ`Д)ノ
不过,社区玩家们开发了一个 BungeeCord 插件,叫做 ViaVersion
这个插件能让高版本玩家透过 BungeeCord 加入低版本服务器
设置插件:
-
前往 ViaVersion GitHub 下载最新 Release
-
将
.jar
文件放进bungeecord\
文件里的plugins\
-
启动 BungeeCord
-
此时刚刚的
plugins\
文件夹里应该多了一个也叫做ViaVersion
的文件夹,里面装的是config.yml
:-
这个是 ViaVersion 的 config 文件,默认不用动就已经设置完成了
-
不过你可以按照情况修改 config,ViaVersion 有官方文档供查阅
-
到这部就已经设置完成力 (。・∀・)ノ゙
Bedrock Edition (基岩版)连接 Java 服务器:
有玩家只有 BE (基岩版)怎么办,有办法让 BE 进 Java 的服务器吗 >︿<MC 官方都买一送一了,直接用 Java 版连不就行了吗 <(  ̄^ ̄)(θ(θ☆( >_<
由于 Geyser 的使用情况非常situational,本文只用 LazyCraft 的案例教学,还是老话,建议多查官方文档
(等哪天我突然想来个完整教程再说,不过大概率不会
LazyCraft 正在使用 BungeeCord ,所以 Geyser 将会是以 BungeeCord 插件
的形式设置
除了 BungeeCord 插件
,Geyser 也提供 Standalong 设置,也就是不依赖 BungeeCord
设置 BungeeCord 插件:
-
前往 Geyser 的 build server 下载最新的
Geyser-BungeeCord.jar
的文件 -
将
Geyser-BungeeCord.jar
文件放进plugins\
-
启动 BungeeCord
-
此时应该会在
plugins\
生成一些配置文件:-
plugins\Geyser-BungeeCord\
这是 Geyser 的配置文件路径 -
你会动的只有
config.yml
,其他一律不用管
-
-
理论上无需再手动配置
config.yml
,直接就能用了,有兴趣的话可以自行查看文档 -
连接:
-
BE 连接默认端口是
19132
, 除非你修改过config.yml
的端口,否则直接填写本机 IP
以及19132
即可 -
注意,BE 是不允许本机连接本机的,所以测试时请使用其他机子(手机等)连接
-
另外,
如果你的服务器已开启
online-mode
,或你想让 BE 玩家正确的显示皮肤
那么请在安装 Geyser 插件之外也装一下 Floodgate
还是利用 LazyCraft 的案例教学,本服 Floodgate 是搭配 BungeeCord 使用
设置 Floodgate:
-
- 选择
floodgate-bungee.jar
- 选择
-
将
floodgate-bungee.jar
文件放进plugins\
-
启动 BungeeCord ,启动完成后可以关掉了
-
此时
plugins\
文件夹应该会生成一些 floodgate 的配置文件:-
plugins\floodgate\
这是 floodgate 的配置文件路径 -
理论上你是不需要去动 floodgate 的
config.yml
,有兴趣的可以自行查看文档
-
-
配置 Geyser 的
config.yml
:-
打开 Geyser 的
config.yml
,路径是plugins\Geyser-BungeeCord\config.yml
-
将
remote
里的auth-type
更改为floodgate
1
2remote:
auth-type: floodgate-
保存
-
-
搞腚,再次启动 BungeeCord 就可以了 ˋ( ° ▽、° )
连接:
新开了博文来专门写这部分
( ̄﹃ ̄)
点我前往后记:
呼,终于写完这一篇啦 (;´д`)ゞ
从七月初挖坑结果咕了一整个暑假到现在九月中终于是把坑填上了(大力吸气
说句实在话,这篇下来一直都忽略了不少东西
当初希望这份笔记不要写的太复杂,结果中途就一直注重着「简洁」,内容只做到了「跟着做就能运行」的程度
其中缺乏了很多解释,某些部分感觉描述起来特别麻烦的就只留下了个「可以自行查看文档」
文中用词欠缺统一,读起来可能会有点乱 <(_ _)>
作为我第一份长篇(?笔记,日后我也会去想办法完善的 (‾◡◝)
cya~