本文为Minecraft服务器搭建系列的第二篇。本文介绍了Minecraft服务器的模组安装与服务器通过公网域名访问和frp内网穿透的相关操作。
若Mermaid图表无法正常显示,刷新页面即可。
MOD
承接上文,Minecraft服务端发的MOD基于Fabric,MOD可以在 CurseForge 和 Modrinth 上下载,可以在MC百科|最大的Minecraft中文MOD百科上查看详细的MOD介绍与依赖关系。另外如果你使用 HMCL 启动器,可以很方便的搜索和下载MOD,无法显示MOD列表的可将HMCL设置为测试版更新后重试。
目前服务器端安装的MOD如下:
$ tree ./mods
./mods
├── architectury-6.3.49-fabric.jar
├── BBOutlineReloaded-2.5-1.19.2-fabric.jar
├── cammies-minecart-tweaks-1.7.jar
├── carpet-tis-addition-mc1.19.2-v1.42.0.jar
├── cloth-config-8.2.88-fabric.jar
├── create-fabric-0.5.0g-791+1.19.2.jar
├── CustomSkinLoader_Fabric-14.15-SNAPSHOT-348.jar
├── emotecraft-for-MC1.19.2-2.2.5-fabric.jar
├── fabric-api-0.66.0+1.19.2.jar
├── fabric-api-0.67.1+1.19.2.jar
├── fabric-carpet-1.19.2-1.4.84+v221018.jar
├── farmers-delight-fabric-1.19.X-1.3.9.jar
├── g4mespeed-1.3.2-mc1.19.jar
├── Geyser-Fabric.jar
├── holograms-1.4.0+1.19.2.jar
├── Jade-1.19.1-fabric-8.6.2.jar
├── journeymap-1.19.1-5.9.0beta2-fabric.jar
├── litematica-fabric-1.19.2-0.12.5.jar
├── lithium-fabric-mc1.19.2-0.10.2.jar
├── magiclib-0.5.37.jar
├── malilib-fabric-1.19.2-0.13.0.jar
├── midnightlib-fabric-1.0.0.jar
├── minimotd-fabric-mc1.19.2-2.0.9.jar
├── plusls-carpet-addition-1.19.2-0.2.5-alpha 0a76b23.jar
├── RoughlyEnoughItems-9.1.572.jar
├── starlight-1.1.1+fabric.ae22326.jar
├── syncmatica-1.19.1-0.3.5.jar
├── tweakeroo-fabric-1.19.2-0.14.3.jar
├── viafabric-0.4.9+21-main.jar
├── whereisit-1.19.2-1.14.13.jar
└── worldedit-mod-7.2.12.jar
玩家想要进入服务器,需要安装如下的客户端MOD,本列表与服务端同步更新:
文件 - Nextcloud (goodnickname.cn)
采用的是HMCL的服务端可更新mod整合包,以后再出文介绍。
生存 · 信息辅助型MOD
可以参考黑山大叔的 1.19.3基础整合包 ,乔哥的 2021年推荐生存必装模组 上 、下,「啾」答疑:MC的一些配置 等,都非常详细。
S for Server, C for Client
- BBOutlineReloaded:BBOR,显示群系、光照强度、史莱姆区块等 【C,S可选】
- fabric-carpet :地毯模组,生存红石必备【SC】
- Jade :抬头显示【SC】
- journeymap :小地图和大地图,但1.19.2下会与BBOR冲突,不建议使用【SC】
- plusls-carpet-addition :PCA,自有协议与客户端同步服务端信息,如箱子物品预览(1.19.2需去Github里找)【SC】
- carpet-tis-addition :TIS Carpet扩展【SC】
- RoughlyEnoughItems :REI 物品管理器,显示合成配方【SC】
- syncmatica :共享投影原理图【SC】
- whereisit : 高亮显示附近物品容器【SC】
- Durability Viewer :耐久信息显示【C】
- EasierVillagerTrading :简单村民交易【C】
- Inventory Profiles Next :IPN,一件背包整理【C】
- Replay Mod :录像、回放【C】
- Xaero's Minimap :小地图【SC】
- Xaero's World Map :大地图【SC】
- VoxelMap :体素地图,优点是可以三界共享坐标,自动换算;更新缓慢【C】
mema全家桶:
- tweakeroo :原版修改【SC】
- Item Scroller :物品快速合成
- litematica :投影,创建和还原建造蓝图 【SC】
- Masa Gadget :Masa全家桶的补充【C】
- MiniHUD :显示各种信息【C】
增强型MOD
- CustomSkinLoader :非正版用户显示自定义皮肤【C】
- emotecraft :动作模组【SC】
- g4mespeed :改变服务器tick,其实此功能已有其他MOD提供【SC】
- lithium-fabric :锂,优化以提高帧数【SC】
- starlight :光照【SC】
- holograms :全息图,固定地点显示浮空标题【S】
- viafabric :跨版本兼容【SC】
- worldedit :创世神,快速建造【SC】
- Better Beds :床优化 【C】
- Better Sodium Video Settings Button :视频界面按钮调整【C】
- Continuity :连续的玻璃【C】
- Controlling :键位冲突显示【C】
- Falling Leaves :落叶【C】
- Sodium :钠,视频优化【C】
- Sodium Extra :钠 · 扩展【C】
- Indium :铟,钠的附属模组【C】
- Iris Shaders :Fabric的光影【C】
- LambDynamicLights :LDL,动态光源【C】
- ModMenu :列出安装的MOD【C】
- Reese's Sodium Options :RSO,Reese的钠视频界面【C】
API(基本两端需装):
- architectury
- fabric-api
- magiclib
- malilib-fabric
- midnightlib
- Cloth Config API
- Fabric Language Kotlin
- libIPN 【C】
服务器美化:
- minimotd :彩色自定义服务器描述与icon【S】
配置文件 config/MiniMOTD/main.conf
icon文件目录 config/MiniMOTD/icons
,需要存放 64*64
大小的图片
motd显示部分:
motds=[
{
# Set the icon to use with this MOTD
# Either use 'random' to randomly choose an icon, or use the name
# of a file in the icons folder (excluding the '.png' extension)
# ex: icon="myIconFile"
icon=random
line1="<rainbow>1.19 Fabric 机械生存友好型服务器"
line2="Fabric Create FarmerDelight Survival <gradient:blue:red>Server"
},
{
# Set the icon to use with this MOTD
# Either use 'random' to randomly choose an icon, or use the name
# of a file in the icons folder (excluding the '.png' extension)
# ex: icon="myIconFile"
icon=random
line1="<blue>Early~ Wolf~ <bold><red>有意思吗!"
line2="管理面板:<italic><gradient:red:green><u><click:open_url:'http://mc.goodnickname.ga'>https://mc.goodnickname.ga</click></u>"
}
]
- Hologram
Simplified Text Format - Placeholder API (pb4.eu)
额外模组
- Cammie's Minecart Tweaks :矿车锁链、速度调整 【SC】
- farmers-delight-fabric :农夫乐事 最高1.19.2【SC】
- create-fabric :机械动力 最高1.19.2 【SC】
间歇泉
使用Geyser模组可以使Bedrock版用户连接至JAVA服务器,但是需要二者版本对应,如果JAVA固定版本而Bedrock端版本随时更新,请配合ViaVersion插件使用,注意如果要持续提供Geyser互通服务,最好JAVA端保持纯净,不安装机械动力等内容型MOD。安装额外内容MOD的JAVA端服务器,即使使用Geyser与ViaVersion也无法完美互通。
- Geyser-Fabric :基岩版与JAVA版互通
参考:[Geyser-Farbic - Geyser Wiki (superiormc.cn)](https://geyser.superiormc.cn/user-guide/da-jian)
注意Geyser无法翻译MOD数据,配置文件在 config/Geyser-Fabric/config.yml
基岩版默认端口为19132,UDP
公网访问
VPS有公网IP,可以方便的从公网访问。本服务器部署在本地,需要使用DDNS或内网穿透的方式将服务器暴露在公网。之后可通过ip地址访问Minecraft服务器。若想通过域名连接Minecraft服务器,还需配置域名解析。
端口转发
由于我的出口宽带有公网IP,可以借助华硕路由器的华硕DDNS实现公网访问,仅需要在路由中做端口转发:
服务名称 | 外部端口 | 内部端口 | 本地 IP 地址 | 通信协议 | 来源 IP |
---|---|---|---|---|---|
Minecraft | 25565 | 25565 | 192.168.50.130 | TCP | |
Minecraft-Bedrock | 19132 | 19132 | 192.168.50.130 | UDP |
内网穿透
如无公网IP,可以使用内网穿透的方案,需要一台服务器作为中转,将客户端的端口点对点穿透,也相当于反代。
我是用腾讯云的VPS作为服务器,使用 frp
穿透,国内访问延迟很低,但是速度受限于VPS的带宽。
frp安装
从Github下载压缩包:Releases · fatedier/frp (github.com)
wget https://github.com/fatedier/frp/releases/download/v0.46.1/frp_0.46.1_linux_amd64.tar.gz
解压缩下载的压缩包,将其中的 frpc 拷贝到内网服务所在的机器上,将 frps 拷贝到具有公网 IP 的机器上,放置在任意目录。
tar -xzvf frp_0.46.1_linux_amd64.tar.gz
编写配置文件,先通过 ./frps -c ./frps.ini
启动服务端,再通过 ./frpc -c ./frpc.ini
启动客户端。
frps 服务端配置
[common]
# 穿透服务的端口
bind_port =端口
bind_addr = 0.0.0.0
# http服务的端口(本例不适用)
vhost_http_port = 端口
# 认证方式:token
authentication_method = token
token = xxxxxxxxxxxx
heartbeat_timeout = 90
user_conn_timeout = 10a
tcp_mux = true
# 服务端管理面板 端口
dashboard_addr = 0.0.0.0
dashboard_port = 端口
# dashboard对应的用户名/密码
dashboard_user = admin
dashboard_pwd = password
服务端通过./frps -c ./frps.ini
启动。
使用 systemd
管理 frps
服务:
vim /etc/systemd/system/frps.service
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
Restart=on-failure
RestartSec=5s
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.ini
[Install]
WantedBy = multi-user.target
使用 systemctl start frps
启动服务。
frpc 客户端
[common]
# 公网服务器的地址
server_addr = 地址
server_port = 端口
authentication_method = token
token = xxxxxxxxxxxxxxxxxx
protocol = tcp
tcp_mux = true
user = deepin
#log_file = /dev/null
log_level = info
log_max_days = 3
# TCP穿透
[mcjava]
type = tcp
local_ip = 127.0.0.1
local_port = 25565
remote_port = 25565
[mcbedrock]
type = udp
local_ip = 127.0.0.1
local_port = 19132
remote_port = 19132
客户端通过 ./frpc -c ./frpc.ini
启动。
域名解析
添加指向Minecraft服务器IP地址的A记录,如果是家用服务器,可以使用DDNS或内网穿透。
如果您的Minecraft服务器不使用默认端口25565
,可以配置SRV解析:
_minecraft._tcp.xxx.com 300 class SRV 1 0 25565 mc.goodnickname.cn