目录
服务端运维
Ubuntu 部署依赖安装🔗
sudo apt install -y screen nginx git default-jdk wget curl mysql unzip tree
资源包制作注意事项🔗
制作资源包时,应在 assets 同级目录选择所有文件,而不是在父目录下压缩。先进入 assets 目录下面,再执行指令 zip -r resourcepack.zip ./* 生成压缩文件。查看资源包的 SHA-1 值使用:echo -e "SHA-1: " "$(shasum -b resourcepack.zip | cut -d ' ' -f 1)"
使用 Query 协议查询服务器状态需要 UDP 协议,因此在云服务器上部署时需要放行对应端口。
关于Mac上玩时,无线网络总是断开重连的解决方案🔗
这个可能是网络问题,可以在 Minecraft Bug 列表中搜索该问题:
MC-98598
。解决方案是在 JVM 启动参数中指定使用 IPv4:-Djava.net.preferIPv4Stack=true
测试你的服务器可以支持几个玩家同时在线🔗
安装服务器网速测试工具speedtest-cli, 并测速:
$ pip install speedtest-cli
$ speedtest-cli
将得到的上下行网速填入下面网址对应页面,同时填写服务器内存大小后开始计算即可。
Spigot 服务器支持将低版本地图更新到新版本🔗
只需要在启动命令中添加 --forceUpgrade 选项,启动一次服务器地图更新后,启动服务器就不需要添加这个选项了。
Spigot的地图文件有三个目录:
world对应纯净服的主世界地图目录:worldworld_nether对应纯净服的下界地图:world/DIM-1world_the_end对应纯净服的末路之地地图:world/DIM1
从纯净服迁移到 Spigot 服时,将对应文件夹复制到对应目录下,重启服务即可完成地图迁移。
为服务器添加自定义图标🔗
在服务端 jar 文件同一级目录下面,放置命名为 server-icon.png、尺寸为 64x64 的 png 图片,然后重新启动服务端。之后再用客户端连接时,就会把自定义的图标展示在服务端列表里。
添加自定义音乐播放🔗
mp3转ogg指令: ffmpeg -i origin.mp3 -map 0:a:0 output.ogg
资源包目录定义:
├── assets
│ └── minecraft
│ ├── sounds
│ │ └── music
│ │ └── joker
│ │ └── joker.ogg
│ ├── sounds.json
│ └── textures
│ └── entity
│ ├── alex.png
│ └── steve.png
├── pack.mcmeta
└── pack.png
只需要在 minecraft 目录下创建 sounds 目录,用来存放 ogg 格式的声音文件,并确保播放的声音通道是音频通道的第一个通道。然后创建同目录级别的 sounds.json 文件,用来定义声音文件和游戏中声音事件的对应关系。
{
"music.joker": {
"sounds": [
{
"name": "music/joker/joker",
"stream": true,
"volume": 1
}
]
}
}
如上,定义了一个游戏声音事件 music.joker,它使用声音文件 music/joker/joker。在游戏内可以使用指令 /playsound 进行播放,配合命令方块可实现更多玩法。
添加 Spigot 服务 systemd 服务脚本🔗
scripts/systemd/
└── minecraft.service
0 directories, 1 file
部署时将 minecraft.service 文件放入 /etc/systemd/system/ 目录下面,运行命令:
$ sudo systemctl daemon-reload
$ sudo systemctl start minecraft
$ sudo systemctl stop minecraft
$ sudo systemctl reload minecraft
添加了用户游戏提醒脚本,使用crontab添加定时任务🔗
scripts/crontab/mc_cron.sh
#!/usr/bin/env bash
TITLE="jokermc"
function exec() {
/usr/bin/screen -p 0 -S $TITLE -X eval 'stuff "title @a times 10 100 10"\\015'
/usr/bin/screen -p 0 -S $TITLE -X eval 'stuff "title @a title {\\"text\\":\\"温馨提示\\",\\"color\\":\\"white\\",\\"bold\\":\\"true\\"}"\\015'
/usr/bin/screen -p 0 -S $TITLE -X eval 'stuff "title @a subtitle {\\"text\\":\\"各位冒险家们注意早点休息啦!\\",\\"color\\":\\"yellow\\",\\"bold\\":\\"true\\"}"\\015'
}
exec
使用 crontab -e 添加定时执行任务,目前设置为每天凌晨两点提醒用户游戏时间太长,注意休息。
# m h dom mon dow command
0 2 * * * /home/joker/mc_cron.sh
这里的配置需要根据自己的部署环境进行调整。
JVM 优化文章参考🔗
https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/