Skip to content

服务器运营及配置

Joker edited this page Mar 18, 2021 · 6 revisions

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 对应纯净服的主世界地图目录: world
  • world_nether 对应纯净服的下界地图: world/DIM-1
  • world_the_end 对应纯净服的末路之地地图: world/DIM1

从纯净服迁移到Spigot服时,将对应文件夹复制到对应目录下,重启服务即可完成地图迁移。

为服务器添加自定义图标

在服务端jar文件同一级目录下面, 放置命名为server-icon.png尺寸为64x64png图片,然后重新启动服务端。之后再用客户端连接时, 就会把自定义的64x64的图片展示在服务端列表里.

添加自定义音乐播放

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 进行播放, 如果和命令方法配合使用, 则可以有其它的好玩的用法. ;-D

添加了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 优化文章参考

QC: E^{i\pi}+1=0