From 1846604406e8165c32fbc1ac71deeaa787dde941 Mon Sep 17 00:00:00 2001 From: lilingfengdev Date: Tue, 26 Nov 2024 19:19:57 +0800 Subject: [PATCH] =?UTF-8?q?Slime=20=E6=95=99=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs-java/advance/slime-world.md | 142 ++++++++++++++++++ .../optimize/storage-space-optimization.md | 14 +- package.json | 20 +-- 3 files changed, 162 insertions(+), 14 deletions(-) create mode 100644 docs-java/advance/slime-world.md diff --git a/docs-java/advance/slime-world.md b/docs-java/advance/slime-world.md new file mode 100644 index 0000000000..fad6a8c6f5 --- /dev/null +++ b/docs-java/advance/slime-world.md @@ -0,0 +1,142 @@ +--- +title: Slime 世界格式 +sidebar_position: 11 +--- + +# Slime 世界格式 + +Slime 世界格式是 Hypixel 开发的一种世界存储格式 + +优势 + +* 使用 ZStd 替换 ZLib,大大优化体积和加载速度 +* 支持数据库作为加载后端,多服小游戏非常有用 +* 支持 readonly,玩完就没 +* 预加载到内存当中,玩家不会因为加载卡顿 + +适合的服务器: + +* 不适用于大型生存世界,而是适用于小型世界,如**迷你游戏地图或服务器大厅** + +## 下载 + +前往[Github Release](https://github.com/InfernalSuite/AdvancedSlimePaper/releases),找到适合的版本下载即可 + +* `plugin-***-R0.1-SNAPSHOT.1.jar` ASM 的插件版本 +* `asp-server.jar` ASM 的独立服务器核心版本(基于Paper)(不推荐) +* `importer-***-R0.1-SNAPSHOT.jar` ASM 独立的导入工具,可以将原版世界格式转为 SRF 格式 + +## 配置 + +这部分会教你如何配置 Slime 世界 + +### 世界配置选项 + +例子: + +```yaml +worlds: + my_great_world: + source: mongodb + loadOnStartup: false + readOnly: true + spawn: 940, 2, -370 + allowMonsters: false + allowAnimals: false + difficulty: peaceful + pvp: false + environment: NORMAL + worldType: default +``` + +**`source`** 存储世界的数据源名称 + +可用选项: `file`,`mysql`,`mongodb`,也可以使用第三方插件提供的其他数据源。 + +`loadOnStartup` 服务器启动时是否应加载世界 + +可用选项: `true` 和 `false` + +**`readOnly`** 只读选项 + +描述:如果为`true`,对世界的更改将永远不会被存储.如果为`false`,世界将被锁定,因此其他服务器无法在**没有处于只读模式**的情况下**访问它** + +:::tip + +简单的来说,如果你需要使用一些黑魔法,比如通过数据库跨服同步世界,你需要将`readOnly` 设置为`true` + +这亦是 Slime 格式适合小游戏服的一个重要原因 + +::: + +**`spawn`** 世界的生成坐标 + +默认为: `0, 255, 0` + +**`environment`** 世界环境 + +可用选项: `normal`,`nether`,`the_end` + +**`worldType`** 世界类型 + +可用选项: `default`,`flat`,`large_biomes`,`amplified`,`customized`,`debug_all_block_states`,`default_1_1` + +其他选项看名字就知道啥意思了,就不介绍了 + +### 数据源配置 + +在使用数据库存储你的世界之前,你必须对其进行配置,配置在`sources.yml` 中,例子: + +```yaml +file: + # 存储世界的路径 + path: slime_worlds +mysql: + enabled: true + host: 127.0.0.1 + port: 3306 + username: my_mysql_username + password: my_mysql_password + database: slimeworldmanager +mongodb: + enabled: true + host: 127.0.0.1 + port: 27017 + username: my_mongo_username + password: my_mongo_password + auth: admin + database: slimeworldmanager + collection: worlds +``` + +:::note + +如果你要使用 MySQL 或 MongoDB,请将对应选项的`enabled` 设为 `true` + +::: + +## 命令 + +请查阅官方[wiki](https://infernalsuite.com/docs/asp/swp/commands) + +## 转换世界 + +请查阅官方[wiki](https://infernalsuite.com/docs/asp/swp/converting_worlds) + +## FAQ + +### 与 Spigot 兼容吗? + +不兼容,Slime 是基于 Paper 的 + +### 可以覆盖默认世界吗? + +完全可以 + +### Slime 与 Multiverse-Core 兼容吗? + +Multiverse-Core 会检测到 Slime世界为未加载状态,因为它找不到世界目录,然后直接忽略它们.不应该有任何问题;然而,Multiverse-Core 无法与 Slime 世界一起使用. + +### Slime 有世界大小限制吗? + +有,Slime 可以处理高达 46340x4630 块区域.这是 Slime 理论上可以处理的最大的尺寸,前提是有足够的内存.然而,拥有如此大的世界根本不推荐. diff --git a/docs-java/process/maintenance/optimize/storage-space-optimization.md b/docs-java/process/maintenance/optimize/storage-space-optimization.md index 1ec1067ef8..79ab2c0683 100644 --- a/docs-java/process/maintenance/optimize/storage-space-optimization.md +++ b/docs-java/process/maintenance/optimize/storage-space-optimization.md @@ -45,6 +45,8 @@ TODO ### 更高效的储存方式 +#### Linear + :::danger Linear不适合玩家基数非常大/服务器经常滞后/压缩比较大(推荐默认1-5)/ CPU 核心数目小/服务器硬盘空间足够大的服务器。 @@ -61,24 +63,24 @@ Linear不适合玩家基数非常大/服务器经常滞后/压缩比较大(推 主世界可以节省大约 50% 的空间,末地大约为 90% ,且使用现代的 zstd 压缩,可以获得更快的加载和保存速度 -#### 转换区域格式 +##### 转换区域格式 使用之前你需要将 ANVIL 转换成 Linear 区域格式,如果你使用的是 Leaves ,你可以在服务端内部自动转换。 [转换工具](https://github.com/xymb-endcrystalme/LinearRegionFileFormatTools) ,转换非常简单你只需要看着教程做就行(记得做备份) -#### 开启区域格式 +##### 开启区域格式 目前,支持线性区域格式的仅有 LinearPurpur , LinearPaper , Leaves , Leaf , Kaiiju (还有一堆Fork), 开启教程不多说,你只需要查看 Wiki 就行。 -#### 不兼容的插件 +##### 不兼容的插件 ServerBackup 一款备份插件,会由于找不到mca文件报错。 目前已知不兼容线性区域的格式的插件极少无比,已知的有大部分在线网页地图浏览程序,以及Residence部分不兼容(感谢z大神的优雅代码,当传送到一个未加载区块的领地时会崩溃) -#### 测试结果 +##### 测试结果 感谢 HaHaWTH 提供的测试结果,测试内容为使用 Chunky 加载半径 1000 格的方块并保存,测试核心为 Leaf ,实际结果可能与测试结果有出入 @@ -96,6 +98,10 @@ ServerBackup 一款备份插件,会由于找不到mca文件报错。 ::: +#### Slime + +请查看[Slime 区域格式](https://nitwikit.yizhan.wiki/Java/advance/slime-world) + ## 其他 1。使用软链接 / 快捷方式共享多个服务器的 lib ,Minecraft 本体等(除非空间非常少否则不要这样,后果自负); diff --git a/package.json b/package.json index dd5ea94f01..8ba14d7b43 100644 --- a/package.json +++ b/package.json @@ -18,16 +18,16 @@ }, "dependencies": { "@ant-design/icons": "^5.5.1", - "@docusaurus/core": "^3.6.1", - "@docusaurus/faster": "^3.6.2", - "@docusaurus/plugin-content-docs": "^3.6.1", - "@docusaurus/plugin-debug": "^3.6.1", - "@docusaurus/plugin-pwa": "^3.6.1", - "@docusaurus/plugin-sitemap": "^3.6.1", - "@docusaurus/preset-classic": "^3.6.1", - "@docusaurus/theme-common": "^3.6.1", - "@docusaurus/theme-mermaid": "^3.6.1", - "@docusaurus/theme-search-algolia": "^3.6.1", + "@docusaurus/core": "^3.6.3", + "@docusaurus/faster": "^3.6.3", + "@docusaurus/plugin-content-docs": "^3.6.3", + "@docusaurus/plugin-debug": "^3.6.3", + "@docusaurus/plugin-pwa": "^3.6.3", + "@docusaurus/plugin-sitemap": "^3.6.3", + "@docusaurus/preset-classic": "^3.6.3", + "@docusaurus/theme-common": "^3.6.3", + "@docusaurus/theme-mermaid": "^3.6.3", + "@docusaurus/theme-search-algolia": "^3.6.3", "@giscus/react": "^3.0.0", "@mdx-js/react": "^3.1.0", "antd": "^5.21.2",