本篇文章尽量让小白看懂,我使用Debian 12系统,其他的Linux发行版大体上是差不多的,我这里的Minecraft版本是1.20.1
首先使用apt(Ubuntu/Debian默认用的这个包管理器)安装openjdk,我这里的JDK是17版本的
apt install -y openjdk-17-jdk
|
如果是CentOS系统,可以用yum安装openjdk,还要关闭SELinux
以下命令建议根据自己的需求来操作
如果你的服务器在国内的话,你得考虑科学上网了,要不然可能下载失败,假设你在IP为192.168.31.1的机器上有路由设备控制http/socks代理(并且在10809端口允许外网连接)且能够与这台设备通信,那么可以用这个命令暂时设置http代理
export http_proxy="http://192.168.31.1:10809/"; export https_proxy="http://192.168.31.1:10809/"; export no_proxy="localhost, 127.0.0.1, ::1";
|
使用Fabric
我用mkdir命令在/www/wwwroot/目录新建了fabric文件夹,
然后cd命令切换到了这个文件夹,
然后使用curl命令从Fabric官网下载了服务端的jar文件,这个curl可能需要额外安装(Debian系统的话apt install -y curl
就行了,其他的依葫芦画瓢就行了)
mkdir -p /www/wwwroot/fabric cd /www/wwwroot/fabric curl -o fabric.jar -LJ https://meta.fabricmc.net/v2/versions/loader/1.20.1/0.14.21/0.11.2/server/jar
|
然后我使用systemctl工具来控制程序的启动(你也可以使用service等等工具来控制),我这里偷懒使用cat命令一键写入了,你也可以使用vim,nano等等编辑器写入
注意java那里带的参数,其中-Xms指定了堆的内存初始大小,-Xmx指定了内存使用上限,需要根据实际需求更改(我这里是拿64G内存的服务器来跑了)
cat>/usr/lib/systemd/system/fabric.service<<EOF [Unit] Description=fabric service After=network.target syslog.target Wants=network.target
[Service] Type=simple ExecStart=java -Xms1G -Xmx64G -XX:+UseG1GC -jar ./fabric.jar WorkingDirectory=/www/wwwroot/fabric/
[Install] WantedBy=multi-user.target EOF
|
启动应用:systemctl start fabric
设置自启动:systemctl enable fabric
,fabric 将在系统启动时自动启动。
如果需要重启应用,可以使用这个命令:systemctl restart fabric
如果要停止应用,可以使用这个命令:systemctl stop fabric
要查看应用的日志,可以使用这个命令:systemctl status fabric
好了,接下来就是漫长的初始化等待了
首次启动还要把eula.txt的false改成true然后重启应用(也就是同意他的协议)
到这里基本的服务器就能跑起来了,有关配置信息的详细说明可以查阅https://minecraft.fandom.com/zh/wiki/Server.properties
上面的这个
(是心奈的100昏哎)图标可以找一张64*64的png图片命名为server-icon.png上传到fabric的目录下
接下来是mod的安装
比如我需要兼容基岩版的连接,那么我需要去下载能够支持这样的插件,比如Geyser
首先,既然我是用Fabric跑起来的,那我还需要它的API插件即fabric-api,
https://www.curseforge.com/minecraft/mc-mods/fabric-api
Fabric 专用的的Geyser mod在这里下载:
https://ci.opencollab.dev/job/GeyserMC/job/Floodgate-Fabric/job/master/
下载完后将jar文件放在/www/wwwroot/fabric/mods/目录下,使用systemctl restart fabric
重启fabric服务就行了
如果需要支持非正版的玩家加入,你还需要Geyser的Floodgate插件,
https://ci.opencollab.dev/job/GeyserMC/job/Floodgate-Fabric/job/master/
下载后也是放在那里的mods目录下,有关它的详细配置说明我就不再详细赘述了,自己去Geyser的wiki看吧
如果要在基岩版聊天,你可能需要在server.properties文件里配置enforce-secure-profile=false
,
不然的话:
如果你玩生电,那我推荐你去试试投影(Litematica)mod和地毯(Carpet)mod,保证会让你爱不释手
如果你要兼容更低一点的客户端版本进入你的服务器,你还需要ViaVersion mod
到这里一个基本的使用Fabric的Minecraft服务器就搭建好了
对了,不要忘记放行端口(怎么操作看你的服务器提供商了),Minecraft Java默认的端口是tcp 25565,Minecraft 基岩版的默认端口是udp 19132
如果你想给自己一个op,你可以先使用systemctl stop fabric
将上面的服务停止,然后cd切换到/www/wwwroot/fabric/目录使用,这样的命令手动运行一下java -jar ./fabric.jar
,然后自动会进入程序的控制台,使用op 你的游戏用户名
赋予权限,完事了之后你就可以quit退出这个程序,然后继续使用systemctl来控制程序,你可以在游戏内给别的用户赋予权限
我大概的的文件夹结构(供参考)
root@Debian-12:/www/wwwroot/fabric . -- banned-ips.json -- banned-players.json -- config -- Geyser-Fabric -- cache -- config.yml -- custom_mappings -- extensions -- locales `-- packs `-- floodgate -- config.yml `-- key.pem -- eula.txt -- fabric.jar -- libraries -- com -- github -- google `-- mojang -- commons-io `-- commons-io -- io `-- netty -- it `-- unimi -- net -- fabricmc -- java `-- sf `-- org -- apache -- joml -- ow2 `-- slf4j -- logs -- 2023-07-23-1.log.gz -- 2023-07-23-2.log.gz -- 2023-07-23-3.log.gz -- 2023-07-23-4.log.gz -- 2023-07-23-5.log.gz -- 2023-07-23-6.log.gz -- 2023-07-23-7.log.gz `-- latest.log -- mods -- Geyser-Fabric.jar -- ViaVersion-4.7.0.jar -- appleskin-fabric-mc1.20-rc1-2.4.3.jar -- fabric-api-0.85.0+1.20.1.jar -- fabric-carpet-1.20-1.4.112+v230608.jar -- fabric-language-kotlin-1.9.4+kotlin.1.8.21.jar -- floodgate-fabric.jar `-- litematica-fabric-1.20.1-0.15.0.jar -- ops.json -- server-icon.png -- server.properties -- usercache.json -- versions `-- 1.20.1 `-- server-1.20.1.jar -- whitelist.json `-- world -- DIM-1 `-- data -- DIM1 `-- data -- advancements -- 00000000-0000-0000-0009-01f644437326.json -- 02cfc44a-a7ff-4ada-94e9-23d9fee52e68.json -- 5899fcaf-2983-44f1-8339-2b3f1863e762.json -- 5bd53475-9562-375a-9dc8-a701f4a36395.json -- 7a145152-d9c8-377f-b501-0601f9c0d747.json -- c765aaae-5179-433c-875e-35cbe5a6a24a.json `-- f280f42d-690b-3272-ad36-baed97c2a96d.json -- carpet.conf -- data -- raids.dat `-- random_sequences.dat -- datapacks -- entities -- r.-1.-1.mca -- r.-1.0.mca -- r.0.-1.mca `-- r.0.0.mca -- level.dat -- level.dat_old -- playerdata -- 00000000-0000-0000-0009-01f644437326.dat -- 00000000-0000-0000-0009-01f644437326.dat_old -- 02cfc44a-a7ff-4ada-94e9-23d9fee52e68.dat -- 5899fcaf-2983-44f1-8339-2b3f1863e762.dat -- 5899fcaf-2983-44f1-8339-2b3f1863e762.dat_old -- 5bd53475-9562-375a-9dc8-a701f4a36395.dat -- 5bd53475-9562-375a-9dc8-a701f4a36395.dat_old -- 7a145152-d9c8-377f-b501-0601f9c0d747.dat -- 7a145152-d9c8-377f-b501-0601f9c0d747.dat_old -- c765aaae-5179-433c-875e-35cbe5a6a24a.dat -- c765aaae-5179-433c-875e-35cbe5a6a24a.dat_old -- f280f42d-690b-3272-ad36-baed97c2a96d.dat `-- f280f42d-690b-3272-ad36-baed97c2a96d.dat_old -- poi -- r.-1.-1.mca -- r.-1.0.mca -- r.0.-1.mca `-- r.0.0.mca -- region -- r.-1.-1.mca -- r.-1.0.mca -- r.0.-1.mca `-- r.0.0.mca -- scripts -- session.lock `-- stats -- 00000000-0000-0000-0009-01f644437326.json -- 02cfc44a-a7ff-4ada-94e9-23d9fee52e68.json -- 5899fcaf-2983-44f1-8339-2b3f1863e762.json -- 5bd53475-9562-375a-9dc8-a701f4a36395.json -- 7a145152-d9c8-377f-b501-0601f9c0d747.json -- c765aaae-5179-433c-875e-35cbe5a6a24a.json `-- f280f42d-690b-3272-ad36-baed97c2a96d.json
47 directories, 74 files
|
使用paper
一开始我是使用paper搭建的Minecraft服务器,搭建操作也和上面的大同小异,而且性能我感觉要比Fabric好很多,但是它不支持大部分Fabric的mod,所以我就换过来了,
paper默认禁用了Java原版的TNT、地毯复制,破基岩,需要手动在paper-global.yml开启:
unsupported-settings: allow-grindstone-overstacking: true allow-headless-pistons: true allow-permanent-block-break-exploits: true allow-piston-duplication: true compression-format: ZLIB perform-username-validation: true
|
paper搭建也是依葫芦画瓢,我就不细说了:
vim /usr/lib/systemd/system/paper.service
[Unit] Description=paper service After=network.target syslog.target Wants=network.target
[Service] Type=simple ExecStart=java -Xms1G -Xmx64G -XX:+UseG1GC -jar ./paper.jar WorkingDirectory=/www/wwwroot/paper/
[Install] WantedBy=multi-user.target
|
设置自启动:
systemctl enable paper
使用以上命令,paper 将在系统启动时自动启动。如果需要重启应用,可以使用以下命令:
systemctl restart paper
如果要停止应用,可以使用以下命令:
systemctl stop paper 要查看应用的日志,可以使用以下命令:
systemctl status paper
paper的插件放在plugins文件夹里,细节可以查阅paper的wiki,这里不再赘述
文件夹结构参考:
root@Debian-12:/www/wwwroot/paper . -- banned-ips.json -- banned-players.json -- bukkit.yml -- cache `-- mojang_1.20.1.jar -- commands.yml -- config -- paper-global.yml `-- paper-world-defaults.yml -- eula.txt -- help.yml -- libraries -- com -- github -- google -- googlecode -- lmax -- mojang -- mysql `-- velocitypowered -- commons-codec `-- commons-codec -- commons-io `-- commons-io -- commons-lang `-- commons-lang -- io -- leangen -- netty `-- papermc -- it `-- unimi -- javax `-- inject -- net -- fabricmc -- java -- kyori -- md-5 -- minecrell `-- sf `-- org -- apache -- checkerframework -- codehaus -- eclipse -- fusesource -- jline -- joml -- ow2 -- slf4j -- spongepowered -- xerial `-- yaml -- logs -- 2023-07-23-1.log.gz -- 2023-07-23-2.log.gz -- 2023-07-23-3.log.gz -- 2023-07-23-4.log.gz -- 2023-07-23-5.log.gz -- 2023-07-23-6.log.gz -- 2023-07-23-7.log.gz -- 2023-07-23-8.log.gz -- 2023-07-23-9.log.gz `-- latest.log -- ops.json -- paper.jar -- permissions.yml -- plugins -- Geyser-Spigot -- cache -- config.yml -- custom_mappings -- extensions -- locales `-- packs -- Geyser-Spigot.jar -- ViaVersion `-- config.yml -- ViaVersion-4.7.0.jar -- bStats `-- config.yml -- floodgate -- config.yml `-- key.pem `-- floodgate-spigot.jar -- server.properties -- spigot.yml -- usercache.json -- version_history.json -- versions `-- 1.20.1 `-- paper-1.20.1.jar -- whitelist.json -- world -- advancements -- 00000000-0000-0000-0009-01f644437326.json `-- c765aaae-5179-433c-875e-35cbe5a6a24a.json -- data -- raids.dat `-- random_sequences.dat -- datapacks `-- bukkit -- entities -- r.-1.-1.mca -- r.-1.0.mca -- r.0.-1.mca `-- r.0.0.mca -- level.dat -- level.dat_old -- paper-world.yml -- playerdata -- 00000000-0000-0000-0009-01f644437326.dat -- c765aaae-5179-433c-875e-35cbe5a6a24a.dat `-- c765aaae-5179-433c-875e-35cbe5a6a24a.dat_old -- poi -- r.-1.-1.mca -- r.-1.0.mca -- r.0.-1.mca `-- r.0.0.mca -- region -- r.-1.-1.mca -- r.-1.0.mca -- r.-2.-1.mca -- r.-2.0.mca -- r.0.-1.mca `-- r.0.0.mca -- session.lock -- stats -- 00000000-0000-0000-0009-01f644437326.json `-- c765aaae-5179-433c-875e-35cbe5a6a24a.json `-- uid.dat -- world_nether -- DIM-1 -- data -- entities `-- region -- level.dat -- level.dat_old -- paper-world.yml -- session.lock `-- uid.dat `-- world_the_end -- DIM1 -- data -- entities `-- region -- level.dat -- level.dat_old -- paper-world.yml -- session.lock `-- uid.dat
79 directories, 74 files
|
终于写完喽~