2022 年 7 月 4 日更新

默认的种子生成器生成的世界很单一,可以换一个种子生成器。


工具简介

flying-squid 由写各种 Minecraft 的东西(例如服务器) JavaScript 实现的 PrismarineJS 团队开发,开源许可证是 MIT,GitHub 仓库的简介如下:

Create Minecraft servers with a powerful, stable, and high level JavaScript API.

大致意思是:

用一个强大、稳定、高水平的 JavaScript API 创建 Minecraft 服务器。

flying-squid 支持多世界,目前不支持 Minecraft 1.17 版本。

工具安装

截至这篇文章写成时,flying-squid 的版本是 1.4.0,发布大小仅有 304 kb,安装大小仅有 39.8 MB,算是很轻巧了。

以下是安装命令:

1
$ npm install -g flying-squid # 全局安装 flying-squid,可能需要 root 权限

你没看错,只有一条命令。

创建服务器

使用命令行工具

如果你不想使用默认的服务器配置,可以看下面的另一种创建服务器的方法。

以下是 flying-squid 的使用方法:

1
2
3
4
5
6
7
8
9
10
$ # 随便创建一个目录保存存档、日志等信息
$ mkdir minecraft-server
$ cd minecraft-server
$ # 运行 flying-squid,如果目录下没有存档,会自动创建存档
$ flying-squid
$ # 然后输出一堆 Warning 信息,可以不用管
$ # 目前服务器已经创建好了,服务器监听 25565 端口
$ # 可以使用内网穿透工具把 25565 端口映射到公网,让你的异地朋友也能玩你创建的服务器
$ # 命令行提示符变成了 '>',用于输入命令操控服务器(这里的命令是 Minecraft 里的命令)
>

如果你想要关闭服务器,使用经典的 Ctrl+D+Ctrl+C 就能关闭了。

当作库(通过代码)

先创建目录并且进入目录,再局部安装 flying-squid:

1
2
3
4
5
$ # 随便创建一个目录保存存档、日志等信息
$ mkdir minecraft-server
$ cd minecraft-server
$ # 局部安装 flying-squid
$ npm install flying-squid # 或 yarn add flying-squid

你可以把下面的代码保存在一个 JavaScript 文件里运行,以创建服务器(代码来自 flying-squid 仓库里的实例):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const mcServer = require('flying-squid')

mcServer.createMCServer({
motd: 'A Minecraft Server \nRunning flying-squid', // 服务器简介
port: 25565, // 端口
'max-players': 10, // 最大玩家在线数量
'online-mode': true, // 是否只允许正版用户加入游戏
logging: true, // 记录日志,一般情况下可以关掉
gameMode: 1, // 加入世界玩家的初始游戏模式,0 为生存模式,1 为创造模式,2 为冒险模式,5 为默认模式,参见 https://minecraft.fandom.com/zh/wiki/命令/gamemode
difficulty: 1, // 游戏难度,0 为和平,1 为简单,2 为普通,3 为困难,参见 https://minecraft.fandom.com/zh/wiki/难度
worldFolder: 'world', // 存放世界的目录
generation: {
name: 'diamond_square', // 生成器名称
options: {
worldHeight: 80 // 世界最高高度
}
}, // 世界生成器
kickTimeout: 10000, // 设置玩家连接服务器多少毫秒超时踢出服务器
plugins: {

}, // 设置插件,见下文的“插件”部分
modpe: false, // 允许 Minecraft 基岩版玩家加入服务器?
'view-distance': 10, // 视野距离
'player-list-text': {
header: 'Flying squid', // 头部
footer: 'Test server' // 脚部
}, // 玩家列表文本,按 Tab 键显示,在屏幕最上方
'everybody-op': true, // 所有玩家是否都有 op(管理员)权限
'max-entities': 100, // 最多实体数量
version: '1.16.1' // 地图版本
})

运行 JavaScript 文件:

1
2
3
4
5
6
$ node xxxx.js
$ # 然后输出一堆 Warning 信息,可以不用管
$ # 目前服务器已经创建好了,服务器监听 25565 端口
$ # 可以使用内网穿透工具把 25565 端口映射到公网,让你的异地朋友也能玩你创建的服务器
$ # 命令行提示符变成了 '>',用于输入命令操控服务器(这里的命令是 Minecraft 里的命令)
>

如果你想要关闭服务器,使用经典的 Ctrl+D+Ctrl+C 就能关闭了。

服务器配置

如果你不喜欢 25565 端口,可以修改服务器配置(一般不需要,如果你使用“当作库(通过代码)”的方法创建服务器这部分可以忽略)。

1
2
3
4
5
$ mkdir config 
$ cd config
$ curl -o settings.json https://raw.githubusercontent.com/PrismarineJS/flying-squid/master/config/default-settings.json # 下载默认配置,保存为 settings.json
$ nvim settings.json # 选择一个文本编辑器修改配置,只要能看懂英文,修改配置没大碍,或者看上面的“当作库(通过代码)”部分的配置解释,我就不写配置的详细意思了
$ cd ..

要使用自定义配置,用之前的命令肯定不行了,要用 -c 选项自定义配置文件:

1
$ flying-squid -c "$(pwd)/config" # 为什么要加个 $(pwd) 呢?看看这行代码就知道了 https://github.com/PrismarineJS/flying-squid/blob/73dd100d6f29c9e8b053e6f176da339254df102f/app.js#L21

插件

插件可以丰富游戏功能,而不需要使用命令方块(例如定时自动删除掉落物)。

安装插件

flying-squid 仓库里列出了一些现有的插件,可以看插件的 README 安装。

不同的插件的配置基本也是不一样的,请看插件的 README,学会如何配置那个插件。

如果你用“当作库(通过代码)”的方式创建服务器,你需要修改传给 mcServer.createMCServer 函数的对象属性 plugins

如果你用文件配置服务器,你需要修改配置文件的 plugins 属性。

升级地图版本

如果你的服务器世界版本低于 1.16.1,可以使用 flying-squid 仓库里的一个工具升级世界版本。

结尾

你可以用 flying-squid 在 Termux 上创建一个服务器,和在同一个局域网的伙伴一起玩!