手动格式化了nitwiki中的所有页面 (#288)

* 手动格式化了nitwiki中的所有页面

* 修复注释
This commit is contained in:
SB-Reborn 2024-10-01 11:43:49 +08:00 committed by GitHub
parent 9b3c93adb2
commit f1c9ce1db7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
122 changed files with 1306 additions and 917 deletions

View File

@ -7,7 +7,8 @@ sidebar_position: 3
我的世界基岩版由于使用微软开发的 Visual C++ 编写,需要依赖 Visual C++ 运行库(vc运行库)才能正常运行。在玩家的电脑上,由于 Windows 系统会自动为游戏补全这些运行库,所以玩家下载好基岩版之后就可以直接开始游戏。
但是在基岩版的服务器软件BDS这边情况就有所不同了。BDS 只是一个可执行文件,它并不具备自己补全 vc 运行库的功能需要手动进行安装否则就会报错“缺少vmruntimexxx.dll”。你需要为服务器安装至少 [Visual C++ Redistributable for Visual Studio 2015-2022](https://aka.ms/vs/17/release/vc_redist.x64.exe) 这个运行库才行。
但是在基岩版的服务器软件BDS这边情况就有所不同了。BDS 只是一个可执行文件,它并不具备自己补全 vc 运行库的功能需要手动进行安装否则就会报错“缺少vmruntimexxx.dll”。
你需要为服务器安装至少 [Visual C++ Redistributable for Visual Studio 2015-2022](https://aka.ms/vs/17/release/vc_redist.x64.exe) 这个运行库才行。
有时一些辅助软件也会依赖这个运行库例如LeviLamina在缺少运行库时会报错“Error code: 1114 动态裢接库(DLL)初始化例程失败。”,安装这个运行库也可以解决问题。

View File

@ -28,7 +28,7 @@ sidebar_position: 1
2.如果安装了git请使用 `cmd` cd到一个空白文件夹后使用以下指令安装。
```
```shell
git clone https://github.com/bdsx/bdsx.git
```
@ -36,7 +36,7 @@ git clone https://github.com/bdsx/bdsx.git
显示以下内容即代表安装成功(本人当前安装node.js版本为10.8.1)
```
```text
10.8.1
```
@ -57,10 +57,8 @@ git clone https://github.com/bdsx/bdsx.git
如果需要使用 VSCode 启动 BDSX您需要
```
1.使用 VSCode 打开此项目
2.安装 Node Debug (legacy)。您可以在右下方看到建议通知框。
3.打开终端Ctrl+Shift+
4.运行 `npm i` 来安装 NPM 包与 BDS
5.按下 `F5` 以构建并运行
```
1. 使用 VSCode 打开此项目
2. 安装 Node Debug (legacy)。您可以在右下方看到建议通知框。
3. 打开终端Ctrl+Shift+
4. 运行 `npm i` 来安装 NPM 包与 BDS
5. 按下 `F5` 以构建并运行

View File

@ -10,7 +10,7 @@ sidebar_position: 1
# LeviLamina 安装教程
# 方法零: 使用笨蛋脚本
## 方法零: 使用笨蛋脚本
首先下载[安装脚本](https://github.com/lilingfengdev/NitWiki-Script/releases/download/windows-latest/liteloaderbds-install.exe),下载完后右键**以管理员启动**即可
@ -20,7 +20,7 @@ sidebar_position: 1
:::
# 方法一: 使用 Lip 进行一键配置
## 方法一: 使用 Lip 进行一键配置
### 准备工作-安装 Lip
@ -40,7 +40,7 @@ sidebar_position: 1
然后运行命令
```
```shell
lip install github.com/LiteLDev/LeviLamina
```
@ -50,13 +50,13 @@ Lip 会自动下载 BDS 并配置 LeviLamina 加载器
如果因网络问题无法下载 GO 模块或 LeviLamina 及其依赖,可以运行命令
```
```shell
lip config GoModuleProxyURL <url>
```
```
```shell
lip config GitHubMirrorURL <url>
```
@ -72,11 +72,11 @@ lip config GitHubMirrorURL <url>
现在,你已成功安装了 LeviLamina 了,要启动它,请运行命今
```
```shell
bedrock_server_mod.exe
```
# 方法二: 手动安装(不推荐)
## 方法二: 手动安装(不推荐)
只有想要调试新版本的开发人员才会手动安装,手动安装只会安装允许 LeviLamina 运行的基本部件,它缺少 CrashLogger、I18N 等组件。
@ -115,6 +115,6 @@ bedrock_server_mod.exe
现在,你已成功安装了 LeviLamina 了,要启动它,请运行命今
```
```shell
bedrock_server_mod.exe
```

View File

@ -61,7 +61,9 @@ TODO
指只有一个 .js/.lua/.py 代码文件的插件。
首先将插件文件放入 `plugins` 文件夹,然后启动或重启一次服务器。此时服务器将警告 `WARN [legacy-script-engine-quickjs] Legacy plugins have been migrated please restart the server to load them!`。**此时插件并未被加载,你需要再次重启服务器** ,之后插件就能加载了。
首先将插件文件放入 `plugins` 文件夹,然后启动或重启一次服务器。
此时服务器将警告 `WARN [legacy-script-engine-quickjs] Legacy plugins have been migrated please restart the server to load them!`
**此时插件并未被加载,你需要再次重启服务器** ,之后插件就能加载了。
#### nodejs、python 多文件

View File

@ -7,7 +7,8 @@ sidebar_position: 2
## 什么是 Legacy Script Engine
Legacy Script Engine 简称 LSE是 LeviLamina 上的一系列插件,被用作 LiteLoader Scipt Engine(LLSE)到 LeviScript(LS)的过渡。LSE 的一些特性与 LLSE 相同,你可以阅读 LLSE 来了解该插件的特点。以下是这两个插件的不同之处:
Legacy Script Engine 简称 LSE是 LeviLamina 上的一系列插件,被用作 LiteLoader Scipt Engine(LLSE)到 LeviScript(LS)的过渡。
LSE 的一些特性与 LLSE 相同,你可以阅读 LLSE 来了解该插件的特点。以下是这两个插件的不同之处:
1. LSE 只能在 LeviLamina 上运行LLSE 只能在 LiteLoader 上运行
2. LSE 的插件格式与 LLSE 不同。要想让 LSE 运行 LLSE 插件,需要 LSE 自动或服主手动进行格式转换。
@ -33,7 +34,11 @@ Legacy Script Engine 简称 LSE是 LeviLamina 上的一系列插件,被用
### 使用 Lip 安装
**非常推荐使用 Lip 安装。手动安装 LSE 的过程极其复杂繁琐**
:::tip
非常推荐使用 Lip 安装。手动安装 LSE 的过程极其复杂繁琐
:::
一次性安装 QuickJS 和 Lua 引擎
@ -55,7 +60,8 @@ lip install gitea.litebds.com/LiteLDev/legacy-script-engine-python
:::warning
由于 legacy-script-engine-python 与系统中的 python 解释器冲突,安装时你需要确保系统中没有 python 解释器。如果系统中已安装 python 解释器,你需要将其**彻底卸载** 。如果你必须使用系统中的 python 解释器,你只能放弃所有的 python 插件。
由于 legacy-script-engine-python 与系统中的 python 解释器冲突,安装时你需要确保系统中没有 python 解释器。如果系统中已安装 python 解释器,你需要将其**彻底卸载** 。
如果你必须使用系统中的 python 解释器,你只能放弃所有的 python 插件。
:::

View File

@ -9,17 +9,20 @@ sidebar_position: 1
LiteLoaderBDS 不会自动下载安装对应版本 BDS你需要手动寻找和下载相应版本的旧版 BDS。
除了一些第三方网站提供的存档以外,你可以通过这种方式下载到旧版 BDS`https://minecraft.azureedge.net/bin-win/` 与 BDS 压缩包文件名拼接起来。例如要下载1.20.30.02,你就可以在浏览器中访问 `https://minecraft.azureedge.net/bin-win/bedrock-server-1.20.30.02.zip`
除了一些第三方网站提供的存档以外,你可以通过这种方式下载到旧版 BDS`https://minecraft.azureedge.net/bin-win/` 与 BDS 压缩包文件名拼接起来。
例如要下载1.20.30.02,你就可以在浏览器中访问 `https://minecraft.azureedge.net/bin-win/bedrock-server-1.20.30.02.zip`
## 下载 LiteLoaderBDS
:::warning
LiteLoaderBDS 仅适配了 BDS 的1.20.32 及以下版本。对于更高版本的 BDS 需要使用 [LeviLamina](../LeviLamina/LeviLamina.md) 加载器。对于 1.20.40 - 1.20.51 版本,你需要使用其他加载器。如果你只需要兼容 1.20.40 - 1.20.51 的客户端进服,你可以选用 BDS 1.20.32、最新版 LiteLoader 和 Glacie 插件的方案。
LiteLoaderBDS 仅适配了 BDS 的1.20.32 及以下版本。对于更高版本的 BDS 需要使用 [LeviLamina](../LeviLamina/LeviLamina.md) 加载器。
对于 1.20.40 - 1.20.51 版本,你需要使用其他加载器。如果你只需要兼容 1.20.40 - 1.20.51 的客户端进服,你可以选用 BDS 1.20.32、最新版 LiteLoader 和 Glacie 插件的方案。
:::
前往 https://github.com/LiteLDev/LiteLoaderBDSv2/releases 下载 BDS 版本对应的发行版。你可以在更新日志的 BDS 标签中找到该发行版适配的 BDS 版本。例如 2.14.1、2.14.0 的 BDS 标签写着 1.20.0.01,证明该发行版适配了 BDS 的 1.20.0.01 版本。
前往 https://github.com/LiteLDev/LiteLoaderBDSv2/releases 下载 BDS 版本对应的发行版。你可以在更新日志的 BDS 标签中找到该发行版适配的 BDS 版本。
例如 2.14.1、2.14.0 的 BDS 标签写着 1.20.0.01,证明该发行版适配了 BDS 的 1.20.0.01 版本。
## 安装 LiteLoaderBDS

View File

@ -19,8 +19,11 @@ import TabItem from '@theme/TabItem';
## 主流加载器
<!--markdownlint-disable line-length-->
<Tabs queryString="plugins-loader">
<TabItem value="levilamina" label="LeviLamina">
| 插件加载器 | 别名LLLLLv3 |
| --- | --- |
| 名称 | [LeviLamina](https://levilamina.liteldev.com/zh) |
@ -30,8 +33,10 @@ import TabItem from '@theme/TabItem';
| 理由 | 插件生态不错,跟 [LiteLoader](#寿终正寝の加载器) 时代一样巅峰 |
| 下载 | [GitHub 下载](https://github.com/LiteLDev/LeviLamina/releases) |
| 支持的 MC 版本 | 1.20.61-1.21.3(目前保持更新) |
</TabItem>
<TabItem value="endstone" label="EndStone">
| 插件加载器 | |
| --- | --- |
| 名称 | [EndStone](https://github.com/EndstoneMC/endstone) |
@ -41,8 +46,10 @@ import TabItem from '@theme/TabItem';
| 理由 | 虽然几乎没有插件生态,仅社区有 **极少** 的插件,但最近形势较好,社区内有参与开发的声音,后续可能会追平 LeviLamina |
| 下载 | [Github 下载](https://github.com/EndstoneMC/endstone/releases) |
| 支持的 MC 版本 | 1.20.71 - 1.21.2(目前保持更新) |
</TabItem>
<TabItem value="bdsx" label="BDSX">
| 插件加载器 | 别名BDSX |
| --- | --- |
| 名称 | [bdsx](https://github.com/bdsx/bdsx) |
@ -53,13 +60,19 @@ import TabItem from '@theme/TabItem';
| 下载 | [克隆源代码下载](https://github.com/bdsx/bdsx) |
| 插件下载 | [npm源](https://www.npmjs.com/search?q=%40bdsx%2F)<br />[Github](https://github.com/topics/bdsx-plugins) |
| 支持的 MC 版本 | 1.12 - 最新(目前保持更新) |
</TabItem>
</Tabs>
<!--markdownlint-enable line-length-->
## 官方提供的脚本加载器
<!--markdownlint-disable line-length-->
<Tabs queryString="plugins-loader">
<TabItem value="bds-script-api" label="BDS Script API(官方)">
| 插件加载器 | 别名SAPI |
| --- | --- |
| 名称 | [原生 BDS Script API](https://wiki.mcbe-dev.net/-/6424) |
@ -69,13 +82,19 @@ import TabItem from '@theme/TabItem';
| 理由 | 几乎没有插件生态,仅社区有 **极少** 的插件 |
| 下载 | [官网下载](https://www.minecraft.net/zh-hans/download/server/bedrock)<br />[原子云下载](https://res.nullatom.com/Minecraft/Server/BDS) |
| 支持的 MC 版本 | 1.16.210 - 最新(稳定更新) |
</TabItem>
</Tabs>
<!--markdownlint-enable line-length-->
## 寿终正寝の加载器
<!--markdownlint-disable line-length-->
<Tabs queryString="plugins-loader">
<TabItem value="liteloader" label="LiteLoader">
| 插件加载器 | 别名LLLLv2([详情点我](#litexloader-合并至-liteloader2022年2月12日)) |
| --- | --- |
| 名称 | [LiteLoaderBDS](https://github.com/LiteLDev/LiteLoaderBDSv2/) |
@ -85,8 +104,10 @@ import TabItem from '@theme/TabItem';
| 理由 | 插件生态无可厚非,没人会否定它的巅峰时代,可惜岁月不饶人啊...如果你服务器愿意在此版本区间便罢了,因为不好找插件了([详情点我](#liteloader-宣布停更2023年10月份)) |
| 下载 | [GitHub 下载](https://github.com/LiteLDev/LeviLamina/releases) |
| 支持的 MC 版本 | 1.16.210-1.20.31.01(已存档)[^Archived] |
</TabItem>
<TabItem value="litexloader" label="LiteXLoader">
| 插件加载器 | 别名LXL |
| --- | --- |
| 名称 | [LiteXLoader](https://www.minebbs.com/threads/litexloader-x-bds.7439/) |
@ -96,9 +117,12 @@ import TabItem from '@theme/TabItem';
| 理由 | 后续合并到 LiteLoader 中。[详情点我](#litexloader-合并至-liteloader2022年2月12日) |
| 下载 | [Github 下载](https://github.com/EndstoneMC/endstone/releases) |
| 支持的 MC 版本 | 1.20.71 - 1.21.2(已存档)[^Archived] |
</TabItem>
</Tabs>
<!--markdownlint-enable line-length-->
## 相关历史
### PDB 事件(2024年6月6日)
@ -106,19 +130,23 @@ import TabItem from '@theme/TabItem';
此文段部分引用自 B站 Dofes 与 MRUIAW 的合作视频,稍作了修改。
[Mojang删除了对基岩版最重要的东西...](https://www.bilibili.com/video/BV1GS421o7Dz/)
2024 年 6 月 6 日 凌晨,在发布的 1.21.10.22 Preview 版本的 BDS 中LiteDev 开发成员注意到 PDB 文件被移除,紧接着社区开发者传来消息,称官方曾召开过会讨论 BDS 的 PDB 文件的去向。结果显然是 **决定移除**。如果将来都是如此的话,那么我们将会在高版本迎来首个没有 PDB 的版本。
2024 年 6 月 6 日 凌晨,在发布的 1.21.10.22 Preview 版本的 BDS 中LiteDev 开发成员注意到 PDB 文件被移除,紧接着社区开发者传来消息,称官方曾召开过会讨论 BDS 的 PDB 文件的去向。
结果显然是 **决定移除**。如果将来都是如此的话,那么我们将会在高版本迎来首个没有 PDB 的版本。
官方声称他们知道此次行为会激怒社区开发者,并且是完全故意的。他们认为 MOD 存在所谓的 **“行业标准形式”**,使用调试符号和钩子(Hook)不是 MOD 的 “行业标准形式”。也就是说,他们认为他们提供的 **附加组件** 才是 MOD 的 “行业标准形式”,即宣布当前的所有 MOD 为 **非法**
官方声称他们知道此次行为会激怒社区开发者,并且是完全故意的。他们认为 MOD 存在所谓的 **“行业标准形式”**,使用调试符号和钩子(Hook)不是 MOD 的 “行业标准形式”。
也就是说,他们认为他们提供的 **附加组件** 才是 MOD 的 “行业标准形式”,即宣布当前的所有 MOD 为 **非法**
他们还认为,服务端符文件只适用于制作客户端的作弊软件,而不适用于制作服务端的反作弊系统。这说法就好比说菜刀可以用来杀人,所以禁止出售菜刀()。
他们还认为,服务端符文件只适用于制作客户端的作弊软件,而不适用于制作服务端的反作弊系统。这说法就好比说菜刀可以用来杀人,所以禁止出售菜刀()。
但事实上客户端外挂并不使用 PDB 来查找函数地址,而是用签名来查找所需函数或变量的地址,但事实是服务端的反作弊 **极其依赖** PDB 符号文件。
他们甚至可能还不知道特们的合作服务器使用的都是自己开发的服务端,而不是 BDS重新写一个服务端不叫修改。
开 BDS 的目的是为了生存玩法,而第三方服务端缺少原生特性,顶多开小游戏服。但 MOD BDS 的存在,就是为了在拥有原生特性的服务器上支持一些原生插件。因此,我们有理由相信这只是一个借口,而真正的原因我们还不得而知。我个人猜测,这可能与 Minecraft 的商业化有关。毕竟 Minecraft 是一个商业游戏,而 MOD BDS 可能被视为对其商业模式的一种威胁。社区对这种不顺应社区需求的行为表示了不满有人已经提出了抵制的声音目前相关的请求帖子已经获得了超过1000个赞同。
开 BDS 的目的是为了生存玩法,而第三方服务端缺少原生特性,顶多开小游戏服。但 MOD BDS 的存在,就是为了在拥有原生特性的服务器上支持一些原生插件。因此,我们有理由相信这只是一个借口,而真正的原因我们还不得而知。
我个人猜测,这可能与 Minecraft 的商业化有关。毕竟 Minecraft 是一个商业游戏,而 MOD BDS 可能被视为对其商业模式的一种威胁。社区对这种不顺应社区需求的行为表示了不满有人已经提出了抵制的声音目前相关的请求帖子已经获得了超过1000个赞同。
我们也了解到官方相关负责人正在讨论此事。
我们呼吁大家积极参与讨论让官方了解我们的诉求Partner 项目总监和工作室里的人讨论过反正他们的观点是力推CRIPT的API这将势不可挡未来是 [All in JavaScript(即 SAPI)](#冷门加载器) 的时代只要社区的需求大且合理他们就会添加对应的接口。在PDB方面他们认为这是 **非行业化的**,他们不认为这是合适且合法的 MOD 的行为,并 **《希望》** 社区给出一定要 PDB 才能实现的功能。
我们呼吁大家积极参与讨论让官方了解我们的诉求Partner 项目总监和工作室里的人讨论过反正他们的观点是力推CRIPT的API这将势不可挡未来是 [All in JavaScript(即 SAPI)](#主流加载器) 的时代,
只要社区的需求大且合理他们就会添加对应的接口。在PDB方面他们认为这是 **非行业化的**,他们不认为这是合适且合法的 MOD 的行为,并 **《希望》** 社区给出一定要 PDB 才能实现的功能。
此后,著名插件加载器 LeviLamina 刚出生不久就胎死腹中了...
![LeviLamina 在未来将会存档](./_images/levilamina-will-archived.png)
@ -129,7 +157,8 @@ import TabItem from '@theme/TabItem';
### LiteLoader 宣布停更(2023年10月份)
LiteLoaderBDS 最初是基于 BedrockX 开发的,在 2.0 版本进行了完全重写。它一直处于存档状态,是以前最流行的 BDS 插件加载器之一。最后的版本是 2.16.2,发布于 2023 年 10 月 9 日,支持 BDS 1.20.32 版本。
LiteLoaderBDS 最初是基于 BedrockX 开发的,在 2.0 版本进行了完全重写。它一直处于存档状态,是以前最流行的 BDS 插件加载器之一。
最后的版本是 2.16.2,发布于 2023 年 10 月 9 日,支持 BDS 1.20.32 版本。
一代骄子难道就此陨落了?
@ -140,4 +169,3 @@ LiteLoaderBDS 最初是基于 BedrockX 开发的,在 2.0 版本进行了完全
### LiteXLoader 合并至 LiteLoader(2022年2月12日)
LiteXLoader 于 2022 年 2 月 12 日 合并至 LiteLoader 项目LXL成为LL的一个子模块。 LiteLoaderBDS将继续更新作为C++、Go、Js、Lua和其他语言的通用加载器。所有以前的LXL插件将继续在新的LL版本下正常运行所有现有的API将保持不变。

View File

@ -16,9 +16,9 @@ sidebar_position: 1
**本文档中提到的插件都有较多用户基础和完善的 Wiki具体插件请查看插件的 Wiki。**
**建议阅读**
建议阅读:
- [TODO](#) - TODO...
- TODO...
import DocCardList from '@theme/DocCardList';

View File

@ -174,7 +174,6 @@ BDS服务端文件夹
- `server.properties`
- 服务器配置文件,用于调整各种服务器设置,如设置端口,设置游戏难度,设置游戏模式(生存、创造等)等。
- [**如何使用?**](#)
---

View File

@ -27,7 +27,7 @@ sidebar_position: 3
其作用是在有玩家使用 **EssentialsX** 的 tpa 尝试`/tpa lilingfeng`时阻止这件事
```sk
```skript
import:
net.ess3.api.events.TPARequestEvent # 导入java类
@ -43,7 +43,7 @@ on TPARequestEvent:
下面来逐行解析
```sk
```skript
import:
net.ess3.api.events.TPARequestEvent
```
@ -56,13 +56,13 @@ import:
通过`import:`块导入类后, **skript-reflect** 将创建一个 **Expressions** ,允许你通过其名称轻易地引用 Java 类。
```sk
```skript
on TPARequestEvent:
```
这行代码意为注册监听`TPARequestEvent`事件,与普通 sk 里注册事件的语法没啥区别。
```sk
```skript
set {_ess_IUser} to event.getTarget() # 获取IUser对象
set {_player} to {_ess_IUser}.getBase() # 获取Player对象
```
@ -71,7 +71,7 @@ on TPARequestEvent:
这个`IUser`是 EssentialsX 的一个**接口**`User`类**实现**了它,可以在[essentialsx 的 javadoc](https://jd-v2.essentialsx.net/net/ess3/api/iuser)里查看。
```sk
```skript
if {_player} is player("lilingfeng"):
send "&cliliangfeng是我的不准tpa到她那里🥵"
cancel event
@ -121,7 +121,7 @@ on TPARequestEvent:
开始编写程序
```sk
```skript
import:
org.leavesmc.leaves.event.bot.BotJoinEvent #导入类
@ -132,7 +132,8 @@ on BotJoinEvent:
{_bot}.setPlayerListName("假的%{_bot_name}%") # 修改假人在tab列表里的名字
```
这一过程也可适用于其他插件,比如[zimzaza4大蛇](https://github.com/zimzaza4)的 [Skript-Floodgate-Api](https://github.com/zimzaza4/Skript-Floodgate-Api)
这一过程也可适用于其他插件,比如[zimzaza4大蛇](https://github.com/zimzaza4)的
[Skript-Floodgate-Api](https://github.com/zimzaza4/Skript-Floodgate-Api)
就是利用 **skript-reflect** 来调用 [Floodagate API](https://wiki.geysermc.org/floodgate/api/) 的。
可以查看下面的教程来详细学习 **skript-reflect** 的基础功能(对,下面这一大坨只是基础)
@ -157,7 +158,7 @@ on BotJoinEvent:
:::
```sk
```skript
import:
java.lang.System
@ -167,7 +168,7 @@ command /example:
System.out.println("test")
```
```sk
```skript
import:
java.lang.String as JavaString
@ -184,26 +185,6 @@ command /example:
###### 在低于 1.17 的 Minecraft 版本上导入 NMS 类
由于 **Minecraft** 1.17 以下版
:::
###### 在低于 1.17 的 Minecraft 版本上导入 NMS 类
由于 **Minecraft** 1.17 以下版
trigger:
message JavaString.format("Hello %%s", sender)
```
:::info
别名必须是有效的 Java 标识符!
:::
###### 在低于 1.17 的 Minecraft 版本上导入 NMS 类
由于 **Minecraft** 1.17 以下版本的 **NMS** 包会随着每个 **Minecraft** 版本而变化,因此你应该动态生成包前缀。有关详细信息,请参阅[计算选项](https://tpgamesnl.gitbook.io/skript-reflect/advanced/computed-options#using-computed-options-for-nms-imports)。
##### _在运行时导入类_
@ -214,13 +195,13 @@ command /example:
语法:
```sk
```skript
[the] [java] class %text%
```
示例:
```sk
```skript
on script load:
set {Player} to the class "org.bukkit.entity.Player"
message "%{Player}%" # org.bukkit.entity.Player
@ -230,14 +211,14 @@ on script load:
语法:
```sk
```skript
[the] [java] class[es] of %objects%
%objects%'[s] [java] class[es]
```
示例:
```sk
```skript
command /example:
executable by: players
trigger:
@ -249,7 +230,7 @@ command /example:
由于导入块在 effect 命令中不可用,因此你可以使用 import effect(仅在 effect 命令中可用)
```sk
```skript
import <fully qualified name> [as <alias>]
```
@ -263,14 +244,14 @@ import <fully qualified name> [as <alias>]
内部类通常比其周围的类具有更通用的名称,因此应在别名下导入这些名称:
```sk
```skript
import:
org.bukkit.entity.EnderDragon$Phase as EnderDragonPhase
```
导入这些类的另一种方法是只导入它们的封闭类:
```sk
```skript
import:
org.bukkit.entity.EnderDragon
@ -284,19 +265,20 @@ on load:
语法:
```sk
```skript
%object%.<method name>(%objects%)
```
示例:
```sk
```skript
event-block.breakNaturally()
(last spawned creeper).setPowered(true)
player.giveExpLevels({_levels})
```
方法可以用作 **Effects****Expressions****Conditions** 。如果用作**Conditions**,则只要方法的返回值不是 `false` 、`null`或`0` ,这个 **Conditions** 就会通过。
方法可以用作 **Effects****Expressions****Conditions** 。如果用作**Conditions**,则只要方法的返回值不是 `false` 、`null`或`0`
这个 **Conditions** 就会通过。
###### 调用非公共方法
@ -304,17 +286,17 @@ player.giveExpLevels({_levels})
语法:
```sk
```skript
{_arraylist}.[ArrayList]fastRemove(1)
```
###### 调用重载的方法
###### 调用Overload的方法
通常, **skript-reflect** 可以从运行时传递的参数中推断出要调用的正确的重载方法。如果需要使用某个方法的某种实现,可以在方法名称的末尾附加一个逗号分隔的列表,并用括号括起来。
通常, **skript-reflect** 可以从运行时传递的参数中推断出要调用的正确的Overload方法。如果需要使用某个方法的某种实现,可以在方法名称的末尾附加一个逗号分隔的列表,并用括号括起来。
语法:
```sk
```skript
System.out.println[Object]({_something})
Math.max[int, int](0, {_value})
@ -324,7 +306,7 @@ Math.max[int, int](0, {_value})
语法:
```sk
```skript
%object%.<descriptor>
```
@ -334,7 +316,7 @@ Math.max[int, int](0, {_value})
示例:
```sk
```skript
{_hashmap}.[HashMap]modCount
```
@ -342,13 +324,13 @@ Math.max[int, int](0, {_value})
语法:
```sk
```skript
[a] new %javatype%(%objects%)
```
示例:
```sk
```skript
new Location(player's world 0 0 0)
```
@ -358,7 +340,7 @@ new Location(player's world 0 0 0)
你可以通过引用导入的类来收听任何基于 Bukkit 的事件(包括其他插件添加的事件)。例如,如果要收听 `org.bukkit.event.entity.EnderDragonChangePhaseEvent`
```sk
```skript
import:
org.bukkit.event.entity.EnderDragonChangePhaseEvent
@ -376,7 +358,7 @@ on EnderDragonChangePhaseEvent:
你还可以使用同一处理程序侦听多个事件。这些事件不必相关,但如果尝试访问在一个事件中可用但在另一个事件中不可用的方法,则应采取适当的预防措施。例如,如果要同时侦听`org.bukkit.event.entity.ProjectileLaunchEvent`和`org.bukkit.event.entity.ProjectileHitEvent`
```sk
```skript
import:
org.bukkit.event.entity.ProjectileLaunchEvent
org.bukkit.event.entity.ProjectileHitEvent
@ -391,13 +373,13 @@ on ProjectileLaunchEvent and ProjectileHitEvent:
语法:
```sk
```skript
[the] event
```
示例:
```sk
```skript
import:
org.bukkit.event.entity.EnderDragonChangePhaseEvent
org.bukkit.entity.EnderDragon$Phase as EnderDragonPhase
@ -419,7 +401,7 @@ on EnderDragonChangePhaseEvent:
示例:
```sk
```skript
import:
org.bukkit.event.entity.EnderDragonChangePhaseEvent
@ -431,14 +413,12 @@ on EnderDragonChangePhaseEvent with priority highest:
事件优先级:
```
lowest
low
normal
high
highest
monitor
```
- lowest
- low
- normal
- high
- highest
- monitor
##### 处理已取消的事件
@ -446,7 +426,7 @@ monitor
示例:
```sk
```skript
import:
org.bukkit.event.block.BlockBreakEvent
@ -458,7 +438,7 @@ on all BlockBreakEvent:
##### Collect
```sk
```skript
[%objects%]
[%objects% as %javatype%]
```
@ -473,7 +453,7 @@ on all BlockBreakEvent:
##### Spread
```sk
```skript
...%object%
```
@ -481,13 +461,13 @@ on all BlockBreakEvent:
实例:
```sk
```skript
set {_list::*} to ...{_array}
```
##### 创建数组
```sk
```skript
new %javatype%[%integer%]
```
@ -501,7 +481,7 @@ new %javatype%[%integer%]
##### 通过索引获取数组的值
```sk
```skript
%array%[%integer%]
```
@ -517,7 +497,7 @@ new %javatype%[%integer%]
##### Null
```sk
```skript
null
```
@ -525,7 +505,7 @@ null
##### Bits
```sk
```skript
[the] (bit %number%|bit(s| range) [from] %number%( to |[ ]-[ ])%number%) of %numbers%
%numbers%'[s] (bit %number%|1¦bit(s| range) [from] %number%( to |[ ]-[ ])%number%)
```
@ -536,7 +516,7 @@ null
##### Raw Expression
```sk
```skript
[the] raw %objects%
```
@ -546,7 +526,7 @@ null
与 [Expression](https://tpgamesnl.gitbook.io/skript-reflect/advanced/custom-syntax#expression) 一起使用时,可以将其设置为一个值,这将更改该参数的输入值。这可用于将数据存储在调用触发器的变量中。
```sk
```skript
import:
ch.njol.skript.lang.Variable
@ -562,7 +542,7 @@ effect put %objects% in %objects%:
##### 成员
```sk
```skript
[the] (fields|methods|constructors) of %objects%
%objects%'[s] (fields|methods|constructors)
```
@ -573,7 +553,7 @@ effect put %objects% in %objects%:
##### 成员的名字
```sk
```skript
[the] (field|method) names of %objects%
%objects%'[s] (field|method) names
```
@ -582,7 +562,7 @@ effect put %objects% in %objects%:
##### 判断对象是否是某个类的实例
```sk
```skript
%objects% (is|are) [a[n]] instance[s] of %javatypes%
%objects% (is not|isn't|are not|aren't) [a[n]] instance[s] of %javatypes%
```
@ -591,7 +571,7 @@ effect put %objects% in %objects%:
##### 类引用
```sk
```skript
%javatype%.class
```
@ -599,7 +579,7 @@ effect put %objects% in %objects%:
##### 插件实例
```sk
```skript
[(an|the)] instance of [the] plugin %javatype/string%
```

View File

@ -187,7 +187,7 @@ Skript 仍然是编程语言,所有的编程语言都必须在拥有理论基
`/plugins/Skripts/scripts` 目录下创建一个名为 `test.sk` 的文件,并打开粘贴以下代码。
```
```skript
on join:
send "Hello World" to event-player
```
@ -218,7 +218,7 @@ on join:
举一个例子,点击事件的语法是这样的:
```
```text
[on] [(right|left)(| |-)][mouse(| |-)]click[ing] (with|using|holding) %itemtype% on %entitydata/itemtype%
```
@ -290,7 +290,7 @@ on command "/op":
要注意,事件的监听是有优先级的,其中有六个优先级,其中执行顺序为**从上到下**分别为:
|优先级| Priority|
-------- | -----
|---|---|
|最低| Lowest|
|低 |Low|
|正常(默认)|Normal|
@ -306,7 +306,7 @@ Bukkit 的事件就是这样的,所以 Skript 也继承了这个抽象名字
我们来简单假设一个条件,我们想要写一个脚本禁止管理使用 tp 指令传送玩家到其他地方,我们会这样写:
```
```skript
on teleport with priority lowest:
teleport cause is command
#判断 tp 原因是否为指令 tp
@ -329,7 +329,7 @@ on teleport with priority lowest:
查询 [skhub](https://skripthub.net/docs/) 或 [skunity](https://docs.skunity.com/syntax) ,根据直觉选择,与时间和睡觉有关系的事件可能有这些:
```
```skript
every 10 seconds:
at 00:00:
on bed enter:
@ -338,8 +338,8 @@ on bed leave:
我们分别使用这些事件写以下几个脚本:
```
脚本1
```skript
# 脚本1
every 1 second:
loop all players:
if loop-player is not sleeping:
@ -355,8 +355,8 @@ every 1 second:
在这里,我们可以改写为:
```
脚本1改
```skript
# 脚本1改
every 1 second:
if time in world is between 00:00 and 6:00:
loop all players:
@ -368,8 +368,8 @@ every 1 second:
仅仅只是交换两行代码顺序,就能起到提升性能的效果。(这里举例是非常轻量的例子,不足以产生任何性能问题)
```
脚本2
```skript
# 脚本2
on bed leave:
set {%player%::sleep} to false
on bed enter:
@ -388,8 +388,8 @@ at 00:00 in world "world":
属于错误使用了监听事件,因为玩家是否在睡觉不需要我们自行使用事件判断,而是有直接的条件语法。
```
脚本2改
```skript
# 脚本2改
at 00:00 in world "world":
while time in world is between 00:00 and 6:00:
loop all players:
@ -411,8 +411,8 @@ at 00:00 in world "world":
不刷新怪物的事件建议去掉,直接设置**难度为和平**。
```
不推荐,即使这是有用的!
```skript
# 不推荐,即使这是有用的!
on spawn of any monster:
cancel event
on food level change:
@ -440,12 +440,12 @@ on place with priority lowest::
在这里,以下两种写法是等价的。
```
```skript
if player do not have permission "lobby.admin":
cancel event
```
```
```skript
if player has permission "lobby.admin":
xxx
else:
@ -454,7 +454,7 @@ else:
如果只需要判断是或不是,可以灵活选用更简洁的方法,简化为:
```
```skript
on place:
player do not have permission "lobby.admin"
cancel event
@ -490,19 +490,19 @@ TODO
如果你是新手,很有可能会写出类似以下的脚本:
```
if arg-1 is world "world_the_end":
teleport player to location(player's x-coord / 8, player's y-coord, player's z-coord / 8, world "world_the_end")
if arg-1 is world "world_nether":
if player's world is "world_the_end":
teleport player to location(player's x-coord / 8, player's y-coord, player's z-coord / 8, world "world_nether")
if player's world is "world":
teleport player to location(player's x-coord, player's y-coord, player's z-coord, world "world_nether")
if arg-1 is world "world":
if player's world is world "world_nether":
teleport player to location(player's x-coord * 8, player's y-coord, player's z-coord * 8, world "world")
else:
teleport player to location(player's x-coord, player's y-coord, player's z-coord, world "world")
```skript
if arg-1 is world "world_the_end":
teleport player to location(player's x-coord / 8, player's y-coord, player's z-coord / 8, world "world_the_end")
if arg-1 is world "world_nether":
if player's world is "world_the_end":
teleport player to location(player's x-coord / 8, player's y-coord, player's z-coord / 8, world "world_nether")
if player's world is "world":
teleport player to location(player's x-coord, player's y-coord, player's z-coord, world "world_nether")
if arg-1 is world "world":
if player's world is world "world_nether":
teleport player to location(player's x-coord * 8, player's y-coord, player's z-coord * 8, world "world")
else:
teleport player to location(player's x-coord, player's y-coord, player's z-coord, world "world")
```
:::warning[为什么这是不好的]
@ -517,7 +517,7 @@ TODO
最后根据计算出的量直接使用 `teleport player to [location]` 传送即可。
```
```skript
command /world <world>:
permission: command.world
trigger:
@ -596,7 +596,8 @@ command /world <world>:
这里我们拿最常用的一个条件作示例,判断玩家是否有权限。
权限的英文是什么? "permission" 我们通过翻阅侧边栏可以得知与 "permission" 相关的只有 "Has Permission" 一条,官方对这个条件的解释为:"Test whether a player has a certain permission.",翻译过来就是 "检测一个玩家是否拥有某一权限"。即我们所需要的:判断玩家是否有权限,那么我们又该如何使用呢 "Has Permssion" 条件呢?
权限的英文是什么? "permission" 我们通过翻阅侧边栏可以得知与 "permission" 相关的只有 "Has Permission" 一条,官方对这个条件的解释为:
"Test whether a player has a certain permission.",翻译过来就是 "检测一个玩家是否拥有某一权限"。即我们所需要的:判断玩家是否有权限,那么我们又该如何使用呢 "Has Permssion" 条件呢?
在 "Has Permission" 下 "Patterns" 给了我们两种标准格式用法:
@ -655,7 +656,7 @@ on command "/op":
我们把两个条件判断句替换为条件1和条件2那么这段代码就可以理解为
```
```text
指令监听 "/op":
事件-发送者类别 是 玩家
条件1:
@ -680,11 +681,15 @@ on command "/op":
我们需要知道的是 #EffSendTitle 的用法。关于怎么用这里本质上和学习Conditions(条件)一样,我们将注意点放在 "Patterns" 上。
``` skript
<!--markdownlint-disable line-length-->
``` text
send title %text% [with subtitle %text%] [to %players%] [for %time span%] [with fade[(-| )]in %time span%] [(and|with) fade[(-| )]out %time span%]
send subtitle %text% [to %players%] [for %time span%] [with fade[(-| )]in %time span%] [(and|with) fade[(-| )]out %time span%]
```
<!--markdownlint-enable line-length-->
按照我们提到的原则:
- "[]" 内可以省略
@ -696,6 +701,8 @@ send subtitle %text% [to %players%] [for %time span%] [with fade[(-| )]in %time
将其带入进我们的伪代码:
<!--markdownlint-disable line-length-->
```skript
指令监听 "/op":
事件-发送者类别 是 玩家
@ -711,6 +718,8 @@ send subtitle %text% [to %players%] [for %time span%] [with fade[(-| )]in %time
send "false" to event-player
```
<!--markdownlint-enable line-length-->
通过以上三种方式,我们都能成功的发送了 Title 信息。
只要记住以上基本原则,所有的用法问题迎刃而解。
@ -1033,7 +1042,8 @@ file "plugins/SUPERGUILDS/%{_fileDir}%.yml" does not exists:
首先对于一个 5000+ 以上的插件来说,你需要关注的东西很多:一个是代码优化,一个是代码可读性。
就拿 SUPERGUILDS 来说,它有 7000 多行。我所有的数据读取和存储都是通过方法完成,单一个数据写入方法我就使用了 100 多次,(也就是以上的代码)。如果我们把它都像上面一样全部展开,我的脚本将立即增加 600+ 行。但是我们在写脚本的时候真正需要的是这些么? 不,我们需要的是效果,是功能,不是数据处理的流程。
就拿 SUPERGUILDS 来说,它有 7000 多行。我所有的数据读取和存储都是通过方法完成,单一个数据写入方法我就使用了 100 多次,(也就是以上的代码)。如果我们把它都像上面一样全部展开,我的脚本将立即增加 600+ 行。
但是我们在写脚本的时候真正需要的是这些么? 不,我们需要的是效果,是功能,不是数据处理的流程。
每次写入数据都需要白白多占 6 行,既不方便后期维护,又要因为要兼顾路径正确与否,浪费很多时间在查错上面,不划算。

View File

@ -46,7 +46,7 @@ public void onPlayerJoin(PlayerJoinEvent evt) {
使用 Skript 时的代码:
```
```skript
on join:
if player has permission "xxx": // 权限判断
message "欢迎你加入服务器!你获得了64枚钻石!" // 发送消息
@ -59,7 +59,8 @@ on join:
### 拓展插件多
使用 Skript 时如果遇到 Skript 不包含的语法,可以使用其他拓展插件如 [Skbee](https://github.com/ShaneBeee/SkBee)、[Skript-reflect](https://github.com/SkriptLang/skript-reflect) 等插件拓展。
使用 Skript 时如果遇到 Skript 不包含的语法,可以使用其他拓展插件如
[Skbee](https://github.com/ShaneBeee/SkBee)、[Skript-reflect](https://github.com/SkriptLang/skript-reflect) 等插件拓展。
### 性能较低

View File

@ -29,7 +29,7 @@ sidebar_position: 3
这样写:
```
```yaml
defaults: &defaults
adapter: postgres
host: localhost
@ -45,7 +45,7 @@ test:
相当于:
```
```yaml
defaults:
adapter: postgres
host: localhost
@ -67,7 +67,7 @@ test:
使用 `|` 来表示该语法,每行的缩进和行尾空白都会被去掉,而额外的缩进会被保留。
```YAML
```yaml
lines: |
我是第一行
我是第二行
@ -78,7 +78,7 @@ lines: |
使用 `|+` 来表示该语法,保留行尾及字符末尾的换行符。
```YAML
```yaml
lines: |+
我是第一行
我是第二行
@ -86,7 +86,7 @@ lines: |+
使用 `|-` 来表示该语法,保留行尾换行符,但不保留字符末尾的换行符。
```YAML
```yaml
lines: |-
我是第一行
我是第二行
@ -96,7 +96,7 @@ lines: |-
使用 `>` 来表示该语法,只有空白行才会被识别为换行,原来的换行符都会被转换成空格。
```YAML
```yaml
lines: >
我是第一行
我也是第一行
@ -108,7 +108,7 @@ lines: >
使用 `>+` 来表示该语法,将行尾换行符替换成空格,保留字符末尾的换行符。
```YAML
```yaml
lines: >+
我是第一行
我也是第一行
@ -116,7 +116,7 @@ lines: >+
使用 `>-` 来表示该语法,将行尾换行符替换成空格,不保留字符末尾的换行符。
```YAML
```yaml
lines: >-
我是第一行
我也是第一行

View File

@ -34,7 +34,7 @@ key1:
一个相对复杂的例子:
```
```yaml
companies:
- id: 1
name: company1
@ -90,7 +90,7 @@ websites:
例子:
```
```yaml
boolean:
- TRUE # true True 都可以。
- FALSE # false False 都可以。
@ -120,7 +120,7 @@ datetime:
如:
```
```yaml
options:
enable: true
check: false
@ -141,7 +141,7 @@ guide:
在同一缩进下不允许出现相同的键,如:
```
```yaml
options:
enable: true
enable: false
@ -152,7 +152,7 @@ options:
不在同一缩进下则可以出现相同的键,如:
```
```yaml
options:
enable: true
check: false

View File

@ -15,7 +15,8 @@ sidebar_position: 2
并且使用参数启动以生成初始文件
如果想进一步优化可以使用 JVM 参数 [Velocity 官方](https://docs.papermc.io/velocity/getting-started#launching-velocity-under-windows)有推荐的 Flags
如果想进一步优化可以使用 JVM 参数
[Velocity 官方](https://docs.papermc.io/velocity/getting-started#launching-velocity-under-windows)有推荐的 Flags
```bash
java -Xms1024M -Xmx1024M -jar 核心名字.jar
@ -84,7 +85,8 @@ Velocity 支持将玩家信息(如 IP 地址、UUID 和皮肤)转发到你的服
- **BungeeCord 转发**(也称为*传统转发*),它有更好的兼容性但安全性较低。
- **BungeeGuard**,与传统 BungeeCord 转发相同,但包含了一个密钥。它比单独的 BungeeCord 转发更好,但不如 Velocitymodern 转发理想。
你只能选择这些转发格式中的一种。目前不可能“混合匹配”转发模式或同时使用所有转发格式。一般来说,如果你只支持使用 Minecraft 1.13 及更新版本的客户端,请使用 Velocity Modern 转发;否则,你必须使用 BungeeCord 转发。
你只能选择这些转发格式中的一种。目前不可能“混合匹配”转发模式或同时使用所有转发格式。一般来说,如果你只支持使用 Minecraft 1.13 及更新版本的客户端,请使用 Velocity Modern 转发;
否则,你必须使用 BungeeCord 转发。
### 配置现代转发(Modern Forwarding)
@ -93,10 +95,12 @@ Velocity 支持将玩家信息(如 IP 地址、UUID 和皮肤)转发到你的服
**`modern` 转发** 是 Velocity 的原生格式,以高效的二进制格式转发所有玩家信息,并采用 MAC 代码增加安全性,使非法服务器难以绕过你的 Velocity 代理。但它**仅支持 Minecraft 1.13 或更高版本**。
#### 警告
::: warning
- `modern` 转发与 **Minecraft 1.13 以下版本****ProtocolSupport 插件** 不兼容。如果使用这些,你需要使用传统的 BungeeCord 兼容转发。
:::
#### 配置步骤
1. 在 `velocity.toml` 文件中将 `player-info-forwarding` 设置为 `modern`
@ -136,7 +140,7 @@ Velocity 支持将玩家信息(如 IP 地址、UUID 和皮肤)转发到你的服
<details>
<summary>点击展开</summary>
#### 警告
:::warning
- 传统转发 **本质上是不安全的**。如果必须使用,应了解如何正确保护你的服务器。
@ -145,6 +149,8 @@ Velocity 支持将玩家信息(如 IP 地址、UUID 和皮肤)转发到你的服
3. 在 `velocity.toml` 中将 `player-info-forwarding` 设置为 `legacy`
4. 确保服务器能接受 Velocity 发送的转发玩家数据。
:::
#### 增加安全性
- 对于托管在共享主机上的代理Velocity 可选地支持 **BungeeGuard**

View File

@ -28,19 +28,21 @@ velocity 可以说是目前最优秀的**Minecraft代理端**之一,由经验
## FAQ
**1.Qvelocity 支持bungeecord和waterfall插件吗**
<!--markdownlint-disable ol-prefix-->
A 不支持,因为如果我们支持 BungeeCord 插件的话那么很多velocity的功能就无从实现了
1. Q velocity 支持bungeecord和waterfall插件吗
A 不支持,因为如果我们支持 BungeeCord 插件的话那么很多velocity的功能就无从实现了。
但是有些插件可能同时也支持 Velocity 或者有 Velocity 的版本。并且,有些 BungeeCord 插件仅要求在子服务器安装,那么这些插件理论上也是可以在 Velocity 为基础的代理服务器上使用的
**2.Q我应当使用哪个版本的 JAVA 来运行 Velocity**
2. Q 我应当使用哪个版本的 JAVA 来运行 Velocity
推荐你使用 JAVA 17 以及以上版本的 JAVA ,如 JAVA 21
A: 推荐你使用 JAVA 17 以及以上版本的 JAVA ,如 JAVA 21
**3.Q为什么我的玩家连不进服务器**
3. Q 为什么我的玩家连不进服务器?**
*<font color="gray">这里是一些可能的原因</font>*
A: *<font color="gray">这里是一些可能的原因</font>*
首先,你需要检查:
@ -50,11 +52,11 @@ A 不支持,因为如果我们支持 BungeeCord 插件的话,那么很多
此外,这是一些常见的代理端报错:
```
```text
Can't connect to server lobby If you wish to use IP forwarding please enable it in your Bungeecord config as well!
```
```
```text
Can't connect to server lobby Your server did not send a forwarding request to the proxy. Is it set up correctly?
```
@ -62,17 +64,17 @@ Can't connect to server lobby Your server did not send a forwarding request t
此外,如果你同时启用了 BungeeCord 模式,也会报出以上错误,如果你使用 Velocity ,那么请务必关闭 BungeeCord 模式
```
```text
Can't connect to server lobby This server requires you to connect with Velocity.
```
这条报错出现的原因是你在子服务器上启用了 Velocity ,但是却没有在 Velocity 上添加此子服务器,请检查你的 Velocity 配置
**4.Q为什么会出现 Invalid payload REGISTER**
4. Q 为什么会出现 Invalid payload REGISTER
如果你的服务器会出现这种情况
A: 如果你的服务器会出现这种情况
```
```text
[server connection] player1 -> hub has connected
[connected player] player1 (/localhost58943) kicked from server hub Invalid payload REGISTER!
```
@ -83,9 +85,11 @@ Can't connect to server lobby This server requires you to connect with Veloci
~~虽然没什么人遇到这个问题就是了~~
**5.Q在加入到 Froge 服务器时 readTimeout**
5. Q 在加入到 Froge 服务器时 readTimeout
一句话, Mod 太多太大导致连接时间延长了。你可以减少服务器的 Mod 数量或者在 Velocity 配置文件中设置 `read-timeout` 的值,同时在你的 Forge 子服的启动参数中添加 `-Dfml.readTimeout` 参数来提高阈值。比如,你想设置你的 readTimeout 时间到 120 秒
A: 一句话, Mod 太多太大导致连接时间延长了。
你可以减少服务器的 Mod 数量或者在 Velocity 配置文件中设置 `read-timeout` 的值,同时在你的 Forge 子服的启动参数中添加 `-Dfml.readTimeout` 参数来提高阈值。
比如,你想设置你的 readTimeout 时间到 120 秒
那么你可以设置:
`read-timeout = 120000` (单位:毫秒)
@ -94,12 +98,14 @@ Can't connect to server lobby This server requires you to connect with Veloci
这样将服务器重启后readTimeout 时间就拉长了,下次就可以正常进入服务器了
**6.Q我可以每个子服都使用不同的转发模式吗**
6. Q 我可以每个子服都使用不同的转发模式吗?
不行,至少现在不行,你只能在 `velocity.toml` 中设置一个单一的转发模式
A: 不行,至少现在不行,你只能在 `velocity.toml` 中设置一个单一的转发模式
关于各个不同的转发模式,可以看到这里 [搭建](./build-up.md#子服配置)
有大佬提出了关于这个问题的 [PR](https://github.com/PaperMC/Velocity/pull/1357)
可以坐等合并了,合并之后就可以给各个不同的子服配置不同的转发模式啦
<!--markdownlint-enable ol-prefix-->

View File

@ -2,7 +2,9 @@
sidebar_position: 3
---
以下配置仅为汉化参考 **请勿直接复制!!**
# 配置文件
以下配置仅为汉化参考 **请勿直接复制!!**
```toml
# 配置版本。不要更改这个

View File

@ -5,6 +5,8 @@ sidebar_position: 1
# 命令
<!--markdownlint-disable line-length-->
| 命令 | 权限 | 描述 |
| --- | --- |--- |
| `/alert` | `bungeecord.command.alert` | 发送一条整个群组的公告,会显示在所有的子服务器内。颜色符是&,使用&h 可以清除所有默认的格式 |
@ -18,3 +20,5 @@ sidebar_position: 1
| `/perms` | `N/A` | 显示你拥有的权限和所在权限组 |
| `/send` | `bungeecord.command.send` | 将指定玩家移动到目标子服务器使用“current”将会把你所在服务器的所有玩家移动到目标服务器使用“all”将会把整个群组下的玩家移动到目标服务器。子服务器名就是你在“config.yml”的“servers”下面设置的服务器名 |
| `/server` | `bungeecord.command.server` | 送到指定子服务器这个权限默认是高于Bukkit插件权限的也就是说玩家可以在未登录之前使用此命令跳转到另外一个服务器如果另外的服务器没登陆插件那么通过此方法就可以使用到OP账号 |
<!--markdownlint-enable line-length-->

View File

@ -7,6 +7,8 @@ sidebar_position: 2
Velocity 默认在代理的核心中包含了一些命令,这些命令是基于它们对大多数用户所需的。如果你需要更多命令,你可以安装插件来添加。
<!--markdownlint-disable line-length-->
| 命令 | 权限 | 描述 |
|-------------------------------------------|--------------------------------------|--------------------------------------------------------------|
| `/velocity` | N/A | 包含许多子命令,用于管理代理。 |
@ -19,3 +21,5 @@ Velocity 默认在代理的核心中包含了一些命令,这些命令是基
| `/shutdown` | 无(从控制台执行) | 此命令将优雅地关闭 Velocity 代理,所有玩家将从代理断开连接。 |
| `/glist` | `velocity.command.glist` | 如果用户具有此权限(默认无人具有),玩家可以使用此命令查看当前在代理上的玩家数量。 |
| `/send` | `velocity.command.send` | 他们可以将其他玩家(或代理上的所有玩家)发送到另一个服务器。 |
<!--markdownlint-enable line-length-->

View File

@ -11,7 +11,7 @@ sidebar_position: 3
## `/server` 命令
```
```text
/server [配置中设置的子服名字]
```
@ -31,7 +31,7 @@ sidebar_position: 3
https://wiki.citizensnpcs.co/NPC_Commands#Bungee
```
```text
/npc command add -p server MyServerName
```
@ -41,8 +41,8 @@ ady 没有跨服动作,你可以导入其他插件的跨服动作来使用
如安装 Invero 插件后:
```
kether: import invero connect 子服名
```kether
import invero connect 子服名
```
或者使用 command...
@ -51,7 +51,7 @@ kether: import invero connect 子服名
https://github.com/gonalez/znpcs/wiki/Commands#server
```
```text
/znpcs action [id] add SERVER [server]
```
@ -64,7 +64,7 @@ https://github.com/gonalez/znpcs/wiki/Commands#server
https://filoghost.me/docs/chest-commands/actions
```
```yaml
ACTIONS:
- 'server: hub'
```
@ -73,7 +73,7 @@ ACTIONS:
https://wiki.helpch.at/helpchat-plugins/deluxemenus/files
```
```yaml
- '[connect] <serverName>'
```
@ -81,7 +81,7 @@ https://wiki.helpch.at/helpchat-plugins/deluxemenus/files
https://hhhhhy.gitbook.io/trmenu-v3/menu/action/types#kua-fu-chuan-song
```
```yaml
- 'server: Lobby'
```
@ -89,6 +89,6 @@ https://hhhhhy.gitbook.io/trmenu-v3/menu/action/types#kua-fu-chuan-song
文档没写
```
```yaml
- 'connect 子服名'
```

View File

@ -148,6 +148,7 @@ sidebar_position: 1
PAPIProxyBridge 是安装在后端和代理服务器上的库桥插件,它允许代理端插件使用 PlaceholderAPI 占位符设置文本格式
在 Spigot (1.16.5+) 上安装最新版本的插件以及 [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) 插件,或在 Fabric (1.19.3+) 服务器上安装 [PlaceholderAPI mod](https://placeholders.pb4.eu/),然后在 BungeeCord 或 Velocity 代理服务器上安装该插件
在 Spigot (1.16.5+) 上安装最新版本的插件以及 [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) 插件,
或在 Fabric (1.19.3+) 服务器上安装 [PlaceholderAPI mod](https://placeholders.pb4.eu/),然后在 BungeeCord 或 Velocity 代理服务器上安装该插件
请注意,此插件不能替代 PlaceholderAPI。你仍然需要在 Spigot/Fabric 服务器上安装 PlaceholderAPI

View File

@ -178,6 +178,10 @@ _插件需要安装在代理端上如果你在子服安装了TAB可能会
:::
从 Minecraft 1.19.1 开始Mojang 实现了一个[新的聊天系统](https://zh.minecraft.wiki/w/Java%E7%89%881.19.1#%E5%B8%B8%E8%A7%84)该系统使用每个玩家拥有的签名密钥。Velocity 尚不完全支持取消或修改这种类型的消息和命令,因此你可以安装 SignedVelocity 插件, 这将允许将消息或命令传输到你的服务器,在服务器上收到消息或命令后, 将应用在 Velocity 中计算的结果。 —— Velocity 官方文档
<!--markdownlint-disable line-length-->
_此外由于其功能实现它也能修复因缺少个人信钥而导致无法加入服务器等问题_
> 从 Minecraft 1.19.1 开始Mojang 实现了一个[新的聊天系统](https://zh.minecraft.wiki/w/Java%E7%89%881.19.1#%E5%B8%B8%E8%A7%84)该系统使用每个玩家拥有的签名密钥。Velocity 尚不完全支持取消或修改这种类型的消息和命令,因此你可以安装 SignedVelocity 插件, 这将允许将消息或命令传输到你的服务器,在服务器上收到消息或命令后, 将应用在 Velocity 中计算的结果。 —— Velocity 官方文档
<!--markdownlint-enable line-length-->
此外由于其功能实现,它也能修复因缺少个人信钥而导致无法加入服务器等问题。

View File

@ -25,19 +25,19 @@ sidebar_position: 8
:::
**关闭权限**
### 关闭权限
在跨服端安装 [Luckperms](/docs-java/process/plugin/ManageTool/Permission/Permission.md) 的跨服端对应版本然后执行命令:
- BungeeCord
```
```text
/lpb group default permission set bungeecord.command.server false
```
- Velocity
```
```text
/lpv group default permission set velocity.* false
```

View File

@ -29,19 +29,23 @@ Waterfall 仍然会合并来自 BungeeCord 的更改。
目前为止,你可以选择以下核心进行转发:
<!--markdownlint-disable line-length-->
| 名称 | 介绍 | 推荐与否 | 下载镜像 |
|-----------------------------------------------------------|-----------------------------------------|------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Waterfall](https://papermc.io/software/waterfall) | Papermc 对 BungeeCord 的分支,但已停止向其添加新功能 | 不推荐 | [McRes](https://mcres.cn/downloads/waterfall.html) [FastMirror](https://www.fastmirror.net/#/download/Waterfall) [原子云](https://res.nullatom.com/Minecraft/Server/Waterfall/) |
| [Lightfall](https://github.com/ArclightPowered/lightfall) | Arclight waterfall的分支支持forge玩家进入服务器 | - | [McRes](https://dev.mcres.cn/job/Lightfall/lastBuild/) [FastMirror](https://www.fastmirror.net/#/download/lightfall) |
| [Velocity](https://papermc.io/software/velocity) | 新生代代理端核心拥有高安全性和高性能但是插件不如BungeeCord那边多 | 非常推荐 | [McRes(自己点进去找)](https://mcres.cn/) [FastMirror](https://www.fastmirror.net/#/download/Velocity) [原子云](https://res.nullatom.com/Minecraft/Server/Velocity/) |
| [BungeeCord](https://github.com/SpigotMC/BungeeCord) | 最古老的代理端核心甚至有网页版mc的核心 | - | [McRes](https://repo.wdsj.io/repository/Bungeecord/BungeeCord.jar) [FastMirror](https://www.fastmirror.net/#/download/BungeeCord) |
| [Gate](https://gate.minekube.com/) | 基于Go开发的核心拥有超高的性能和极低内存占用。 | - |
| [Travertine](https://github.com/PaperMC/Travertine) | Waterfall 1.7.10的分支 | - |
| [Gate](https://gate.minekube.com/) | 基于Go开发的核心拥有超高的性能和极低内存占用。 | - | - |
| [Travertine](https://github.com/PaperMC/Travertine) | Waterfall 1.7.10的分支 | - | - |
富哥的选择
| 名称 | 介绍 | 价格 |
|----------------------------------------------------------------------------------|-----------------------------------------------------|-----------------------------------------|
| [NullCordX](https://polymart.org/resource/nullcordx.1476/updates) | 基于反机器人原生构建的复杂瀑布叉,提高了性能 | 10美元 |
| [XCord](https://builtbybit.com/resources/xcord-high-performance-anti-bot.16843/) | BC叉高级反机器人 | 性能 反漏洞利用 Anti-SpigotExploit(1.7-1.20.4) | 10美元 |
| [XCord](https://builtbybit.com/resources/xcord-high-performance-anti-bot.16843/) | BC叉高级反机器人 性能 反漏洞利用 Anti-SpigotExploit(1.7-1.20.4) | 10美元 |
| [FlameCord](https://www.flamecord.com/) | 终极反机器人解决方案Anti-VPN和高性能BungeeCord分叉适用于Minecraft服务器 | 6美元(永久15美元) |
<!--markdownlint-enable line-length-->

View File

@ -112,7 +112,7 @@ sidebar_position: 2
![](_images/vul-papi.png)
```
```kether
papi {action} | placeholder {action}
```
@ -130,13 +130,13 @@ papi {action} | placeholder {action}
用法为:
```
```kether
inline "阿巴阿巴{{你要用的kether}}qwq"
```
比如上面的案例中,可以这样做
```
```text
/vul eval tell inline "我叫{{papi %player_name%}},我今年{{papi %player_level%}}级了"
```
@ -148,7 +148,7 @@ inline "阿巴阿巴{{你要用的kether}}qwq"
用法为:
```
```kether
join [ 动作1 动作2 动作3 更多 ]
```
@ -156,7 +156,7 @@ join [ 动作1 动作2 动作3 更多 ]
在上面的案例中,可以这样做
```
```text
/vul eval tell join [ "我叫" papi %player_name% ",我今年" papi %player_level% "级了" ]
```
@ -168,14 +168,13 @@ join [ 动作1 动作2 动作3 更多 ]
> https://kether.tabooproject.org/list.html#Name
```
```kether
player [(display|list) ] name
```
### Sender
> 该语句没有在官方文档中给出
> 它的作用是获取脚本执行者的名字。跟 player name 作用类似,它也能用来获取玩家的名字,并且都没有参数。
> 除此之外当控制台作为脚本执行者时它还能获取控制台的名字console只不过这并没有什么用而已。
> 但它的优点在于不依赖玩家执行,相对来说会比 player name 更安全保守一些。
@ -187,7 +186,7 @@ player [(display|list) ] name
### 使用案例
```
```text
/vul eval tell inline "我叫{{player name}}!我叫{{sender}}!!我真的叫{{papi %player_name%}}"
```

View File

@ -3,6 +3,8 @@ title: 逻辑判断
sidebar_position: 3
---
<!--markdownlint-disable no-duplicate-heading-->
# 逻辑判断
## 布尔值(boolean)
@ -36,7 +38,6 @@ sidebar_position: 3
![](_images/冒汗.jpg)
> https://kether.tabooproject.org/list.html#Not
> 判断动作的返回值是否为否,即否定动作的结果。
![](_images/vul-permNot_2.png)
@ -51,7 +52,7 @@ perm -> not
> https://kether.tabooproject.org/list.html#Check
```
```kether
check 动作1 {symbol} 动作2
```
@ -78,7 +79,7 @@ check 动作1 {symbol} 动作2
### 单分支
```
```text
/vul eval if 条件 then 执行的动作
```
@ -90,7 +91,7 @@ check 动作1 {symbol} 动作2
上面只是执行单个动作,那么,如何让他判断 **true** 后执行多行动作?
```
```text
if 条件 then {
语句1
语句2
@ -100,7 +101,7 @@ if 条件 then {
### 双分支
```
```text
/vul eval if 条件 then true执行的动作 else false执行的动作
```
@ -109,7 +110,7 @@ if 条件 then {
执行多行动作
```
```text
if 条件 then {
语句1
语句2
@ -123,13 +124,13 @@ if 条件 then {
if动作的连续使用
```
```text
/vul evel if 条件1 then 动作1 else if 条件2 then 动作2 else if 条件3 then 动作3
```
多行语句
```
```text
if 条件1 then {
动作1
动作2
@ -146,9 +147,9 @@ if 条件1 then {
> https://kether.tabooproject.org/list.html#Case_&_When
#### 单动作
### 单动作
```
```kether
if check player name == postyizhan then tell "是驿站!"
else if check player name == lilingfeng then tell "是驿站的黑奴"
else if check player name == MC_jiaolong then tell "这也是黑奴"
@ -157,7 +158,7 @@ else tell"这谁啊"
上面的改成 Case & When 就是
```
```kether
case player name [
when postyizhan -> tell "是驿站!"
when lilingfeng -> tell "是驿站的黑奴"
@ -166,11 +167,11 @@ case player name [
]
```
#### 多动作
### 多动作
当然他也可以写多行动作
```
```kether
case player name [
when postyizhan -> {
tell "是驿站!"
@ -182,13 +183,13 @@ case player name [
]
```
#### 逻辑判断
### 逻辑判断
他还可以进行逻辑判断!
单动作和多动作放一起展示了
```
```kether
case 1 [
when < 10 -> {
tell "这个数比10小"
@ -203,16 +204,15 @@ case 1 [
### 全部满足(All)
> https://kether.tabooproject.org/list.html#All
> 判断动作列表的所有返回值是否均为是。
```
```kether
all [ 动作1 动作2 动作3 更多 ]
```
例如:
```
```text
/vul eval if all [ perm vulpecula.command not perm luckperms.editor ] then tell 通过 else 不通过
```
@ -223,16 +223,15 @@ all [ 动作1 动作2 动作3 更多 ]
### 一个满足(Any)
> https://kether.tabooproject.org/list.html#Any
> 判断动作列表的所有返回值是否含有是。
```
```kether
any [ 动作1 动作2 动作3 更多 ]
```
例如:
```
```text
/vul eval if any [ perm vulpecula.command not perm luckperms.editor ] then tell 通过 else 不通过
```
@ -244,7 +243,7 @@ any [ 动作1 动作2 动作3 更多 ]
#### all_any多行
```
```kether
all [ 条件1 条件2 ]
any [ 条件1 条件2]
### 等价于

View File

@ -9,7 +9,7 @@ sidebar_position: 5
详细请查看https://www.yuque.com/sacredcraft/kether/action-math
```
```kether
/* 加法运算:等价于 1+2+3 = 6 */
math add [ 1 2 3 ]
math + [ 1 2 3 ]
@ -32,14 +32,14 @@ math / [ 6 2 ]
除了上面几种用法Math 还有一种比较舒服的写法:
```
```text
/* 计算 1 + 3 x 6 ÷ 3 - 2 */
math 1 + 3 * 5 / 6 - 2
```
当然也可以用上一节学到的变量来运算
```
```text
/vul eval set a to 1 set b to 2 math &a - &b
```

View File

@ -3,6 +3,8 @@ title: 数据相关
sidebar_position: 4
---
<!--markdownlint-disable no-duplicate-heading-->
# 数据相关
## 数据类型
@ -18,7 +20,7 @@ sidebar_position: 4
> https://kether.tabooproject.org/list.html#Type
```
```kether
type {token} | type {type} {action}
```
@ -46,7 +48,7 @@ TODO
> https://kether.tabooproject.org/list.html#Variable_Set
```
```kether
set {token} {token} | set {token} to {action}
```
@ -60,7 +62,7 @@ set {token} {token} | set {token} to {action}
> https://kether.tabooproject.org/list.html#Variable_Get
```
```kether
get {token} | &{token}
```
@ -78,7 +80,7 @@ get {token} | &{token}
正确做法:
```
```text
/vul eval set yizhan to 114514 tell get yizhan
```
@ -107,7 +109,7 @@ get {token} | &{token}
语法:
```
```kether
array [ 动作1 动作2 动作3 更多 ]
```
@ -121,7 +123,7 @@ array [ 动作1 动作2 动作3 更多 ]
接下来,我们把数组存进变量里
```
```kether
set yizhan to array [ HelloWord! player name 0.0 ]
```
@ -138,7 +140,6 @@ set yizhan to array [ HelloWord! player name 0.0 ]
#### element
> https://kether.tabooproject.org/list.html#Element
> 将动作的返回值作为列表获取指定元素。
除了上面的 `&变量名[标号]`

View File

@ -106,6 +106,7 @@ Matrix 是由国人 RE 编写的一款反作弊插件,当年诞生是用于取
## AntiCheatAddition
添加了其他反作弊不会反的部分,目前添加了以下:
- 一键整理
- 自动钓鱼
- 自动进食
@ -170,6 +171,5 @@ GitHubhttps://github.com/TalentsRC/Talents-AntiCheat-Config
高版本组合参考:
> Matrix + GrimAC
> NoChestPlus + GrimAC
- Matrix + GrimAC
- NoChestPlus + GrimAC

View File

@ -3,6 +3,8 @@ title: 其他作弊类型
sidebar_position: 2
---
<!--markdownlint-disable no-duplicate-heading-->
# 其他作弊类型
为什么常规的反作弊插件不会包括部分作弊类型?
@ -37,7 +39,6 @@ feature-seeds:
```
> 这是对每个建筑使用随机种子,防止你的世界种子轻易的被破解
> 如果发现你的 `spigot.yml` 中出现了类似以下的配置配置就成功了,你可以修改其中的种子。(但其实不改也完全没问题)
```yaml
@ -385,7 +386,8 @@ anticheat:
#### RayTraceAntiXray
[RayTraceAntiXray](https://builtbybit.com/resources/raytraceantixray.24914/)[开源](https://github.com/stonar96/RayTraceAntiXray)付费且仅售 7 美元。
[RayTraceAntiXray](https://builtbybit.com/resources/raytraceantixray.24914/)
[开源](https://github.com/stonar96/RayTraceAntiXray)付费且仅售 7 美元。
是一款用于隐藏 paper 服务器中使用 `engine-mode: 1` 时暴露在空气中的未隐藏方块的插件。

View File

@ -11,9 +11,11 @@ sidebar_position: 5
推荐两个备份插件(高效的备份,无需停服即可备份)
[ebackup](https://www.spigotmc.org/resources/ebackup-simple-and-reliable-backups-for-your-server-supports-ftp-sftp.69917/) 可设置黑名单不备份某些文件FTP远程备份支持
[ebackup](https://www.spigotmc.org/resources/ebackup-simple-and-reliable-backups-for-your-server-supports-ftp-sftp.69917/)
可设置黑名单不备份某些文件FTP远程备份支持
[serverbackup](https://www.spigotmc.org/resources/server-backup-ingame-dropbox-ftp-backup-1-8-1-20-multithreaded.79320/) 可支持动态备份(即只备份最近变更过的文件),占用空间更小
[serverbackup](https://www.spigotmc.org/resources/server-backup-ingame-dropbox-ftp-backup-1-8-1-20-multithreaded.79320/)
可支持动态备份(即只备份最近变更过的文件),占用空间更小
:::warning

View File

@ -5,13 +5,15 @@ sidebar_position: 7
# 怎么让大佬帮我性能分析
<!--markdownlint-disable ol-prefix-->
1. 检查你的服务器有没有安装 Spark 插件, 尝试 `/spark` 命令或者 `/pl` 看看有没有 Spark
如果没有,手动安装一下 [Spark](performance-analysis.md)
2. 开启 Spark 记录
```
```text
/spark profiler start
```
@ -21,10 +23,12 @@ sidebar_position: 7
3. 结束 Spark 记录
```
```text
/spark profiler stop
```
<!--markdownlint-enable ol-prefix-->
它会给你一个链接,你把这个链接发给大佬并 **礼貌的** 请求帮助你
注:链接位置在下图中红框标记的部分

View File

@ -3,6 +3,8 @@ title: 调服务端配置
sidebar_position: 4
---
<!--markdownlint-disable no-duplicate-heading-->
# 调服务端配置
没有适用于所有服务器的设置。你应该理解每个配置选项,并根据服务器的最佳参数与服务器硬件、玩家数量和服务器性质等调整参数。
@ -187,9 +189,11 @@ simulate-distance: 8
如果你使用的默认 10 chunks 的模拟距离,这会非常影响性能,可以酌情减少,
```
推荐值3 - 8
```
:::tip
推荐值: 3 ~ 8
:::
##### 自动调整
@ -218,15 +222,19 @@ chunk-loading-basic:
此时大量跑图的玩家可能会觉得服务器有一些滞后,但是能够保证大多数玩家的游戏体验,这是值得的。
```
:::tip
推荐值20 - 40
```
:::
#### prevent-moving-into-unloaded-chunks
```
推荐值: true
```
:::tip
推荐值true
:::
防止玩家进入未加载的区块以避免同步加载区块造成的主线程卡顿。view-distance视距越小玩家进入未加载区块的可能性就越大。
@ -238,9 +246,11 @@ chunk-loading-basic:
降低该值可减少大量弹射物造成的区块负载,但可能会导致末影珍珠等出现问题。
```
推荐值: 8
```
:::tip
推荐值8
:::
### 调整区块卸载速度
@ -271,7 +281,7 @@ chunks:
`paper-world-defaults.yml` 中的参数,用于控制世界保存速度。
```
```yaml
max-auto-save-chunks-per-tick: 24
```
@ -339,9 +349,11 @@ chunks:
`paper-world-default.yml` 中的参数,决定服务器是否生成藏宝图。
```
:::tip
推荐值: false
```
:::
#### treasure-maps.find-already-discovered
@ -365,9 +377,11 @@ chunks:
设置为 true 禁用搜索。
```
:::tip
推荐值: true
```
:::
## 实体
@ -491,36 +505,39 @@ ticks-per:
在 paper
```
推荐值:
推荐值:
ambient:
hard: 72
soft: 30
axolotls:
hard: 72
soft: 30
creature:
hard: 72
soft: 30
misc:
hard: 72
soft: 30
monster:
hard: 72
soft: 30
underground_water_creature:
hard: 72
soft: 30
water_ambient:
hard: 72
soft: 30
water_creature:
hard: 72
soft: 30
```yaml
ambient:
hard: 72
soft: 30
axolotls:
hard: 72
soft: 30
creature:
hard: 72
soft: 30
misc:
hard: 72
soft: 30
monster:
hard: 72
soft: 30
underground_water_creature:
hard: 72
soft: 30
water_ambient:
hard: 72
soft: 30
water_creature:
hard: 72
soft: 30
```
此项可以调整各种生物的消失范围(方块为单位)。降低这些值可以更快地清除远离玩家的生物。 你应该将 soft 软距离设置为约`30`,然后将 hard 硬性距离设置的稍微大于 simulation-distance这样当玩家刚刚跑出区块时生物不会立即消失(你可以一并调整 [paper-world configuration] 中的`delay-chunk-unloads-by`)。 当一个生物离开了 hard 距离,该生物会立刻消失。 当一个生物处于 soft 和 hard 距离之间,该生物将有概率消失。 你的 hard 距离应该大于 soft 距离。你应该根据模拟距离调整此项:`(simulation-distance * 16) + 8`。 此项还可能造成玩家经过后,区块不卸载的情况(因为生物还没消失)。
此项可以调整各种生物的消失范围(方块为单位)。降低这些值可以更快地清除远离玩家的生物。
你应该将 soft 软距离设置为约`30`,然后将 hard 硬性距离设置的稍微大于 simulation-distance这样当玩家刚刚跑出区块时生物不会立即消失
(你可以一并调整 [paper-world configuration] 中的`delay-chunk-unloads-by`)。当一个生物离开了 hard 距离,该生物会立刻消失。
当一个生物处于 soft 和 hard 距离之间,该生物将有概率消失。 你的 hard 距离应该大于 soft 距离。你应该根据模拟距离调整此项:`(simulation-distance * 16) + 8`。 此项还可能造成玩家经过后,区块不卸载的情况(因为生物还没消失)。
### 碰撞箱
@ -528,9 +545,11 @@ ticks-per:
`paper-world-default.yml`
```
:::tip
推荐值: 2
```
:::
覆盖 [spigot.yml] 中的同名项。它让你决定一个实体可以同时处理多少次碰撞。`0`将导致无法推动其他实体,包括玩家。`2`应该可以处理大部分情况。 值得注意的是,这将会破坏 maxEntityCramming gamerule 也就是生物堆叠窒息。
@ -538,9 +557,11 @@ ticks-per:
`paper-world-default.yml`
```
:::tip
推荐值: true
```
:::
是否修复实体在攀爬时不受实体挤压影响的问题。这将防止大量生物在攀爬时堆叠在狭小空间内(例如蜘蛛)。
@ -578,9 +599,11 @@ ticks-per:
`pufferfish.yml` 中的关于生物目标选择的配置
```
:::tip
推荐值: true
```
:::
在实体非活动时限制其目标选择器,让非活动实体每 `20 tick` 更新一次其目标选择器,
@ -623,15 +646,17 @@ dab:
`spigot.yml` 中关于刷怪笼 AI 的参数。
```
```yaml
nerf-spawner-mobs: false
```
打开此项可以卸载刷怪笼生成的生物的 AI被卸载 AI 的生物将不会做任何事情。
```
:::tip
推荐值: true
```
:::
这一项打开时候会大幅影响刷怪塔及游戏体验,因此 paper 为此做了[更加人性化的选项](#spawner-nerfed-mobs-should-jump)。
@ -639,23 +664,27 @@ nerf-spawner-mobs: false
`paper-world-defaults.yml` 中控制刷怪笼 AI 的参数。
```
```yaml
spawner-nerfed-mobs-should-jump: false
```
这个参数控制了刷怪笼刷出的生物是否能给在水中跳跃,这修复了 `nerf-spawner-mobs` 导致的刷怪塔问题。
```
:::tip
推荐值: true
```
:::
##### tick-rates.mob-spawner
`paper-world-defaults.yml` 中控制刷怪笼刷新速度的参数。
```
:::tip
推荐值: 2 - 3
```
:::
此项调整刷怪笼的刷新频率,如果服务器有大量刷怪笼,调高刷新间隙这会很有助。
@ -673,9 +702,11 @@ tick-inactive-villagers: true
禁用此功能将有助于提高性能,但在某些情况下会让远处的村民更蠢,此项还会降低刷铁机等的效率。
```
推荐值false
```
:::tip
推荐值: false
:::
##### zombie.aggressive-towards-villager-when-lagging
@ -685,17 +716,21 @@ tick-inactive-villagers: true
大量村民被僵尸恐吓时会造成卡顿,当 TPS 低于`purpur.yml` 中设置的 `lagging-threshold` 值时,启用此项会阻止僵尸追赶村民。
```
:::tip
推荐值: false
```
:::
##### villager.lobotomize.enabled
`purpur.yml` 中控制村民 AI 的配置。
```
:::tip
推荐值: true
```
:::
> 仅当村民造成服务器卡顿时才应启用此项!否则,村民寻路会出现问题。
@ -705,11 +740,11 @@ tick-inactive-villagers: true
`purpur.yml` 中控制村民寻路范围的配置。该项可以调整村民尝试搜索工作方块和床的半径。
```
推荐值:
acquire-poi: 16
nearest-bed-sensor: 16
```yaml
acquire-poi: 16
nearest-bed-sensor: 16
```
降低这个值会大大提高了村民的性能,但会阻止他们探测到比设定值更远的工作方块或床。
@ -718,20 +753,20 @@ tick-inactive-villagers: true
`paper-world-default.yml` 中决定了触发 AI 行为间隔
```
推荐值:
behavior:
```yaml
behavior:
villager:
validatenearbypoi: 60
acquirepoi: 120
sensor:
validatenearbypoi: 60
acquirepoi: 120
sensor:
villager:
secondarypoisensor: 80
nearestbedsensor: 80
villagerbabiessensor: 40
playersensor: 40
nearestlivingentitysensor: 40
secondarypoisensor: 80
nearestbedsensor: 80
villagerbabiessensor: 40
playersensor: 40
nearestlivingentitysensor: 40
```
> 当 [Pufferfish's DAB](#dab) 启用时,不建议修改该项任何默认值。
@ -744,9 +779,11 @@ tick-inactive-villagers: true
`paper-world-default.yml` 控制生物寻路。
```
:::tip
推荐值: false
```
:::
禁用此项将减少寻路次数,从而提高性能。在某些情况下,这会导致生物看起来更加迟钝;
@ -758,11 +795,11 @@ tick-inactive-villagers: true
`paper-world-default.yml` 中可以为每个单独的掉落物控制消失时间。
```
推荐值:
推荐值:
enabled: true
items:
```yaml
enabled: true
items:
cobblestone: 300
netherrack: 300
sand: 300
@ -797,9 +834,9 @@ tick-inactive-villagers: true
`spigot.yml` 中设置同类物品和经验球合并堆叠的距离。
```
推荐值:
推荐值:
```yaml
item: 3.5
exp: 4.0
```
@ -814,17 +851,15 @@ tick-inactive-villagers: true
#### non-player-arrow-despawn-rate
```
推荐值: 20
```
怪物射出的箭消失的时间(以 tick 为单位)。因为玩家无法捡起这些箭,所以你不妨将其设置为`20`(1 秒)之类的值。
#### creative-arrow-despawn-rate
```
:::tip
推荐值: 20
```
:::
创造模式玩家射出的箭消失的时间(以 tick 为单位)。因为玩家无法捡起这些箭,所以你不妨将其设置为`20`(1 秒)之类的值。
@ -834,9 +869,11 @@ tick-inactive-villagers: true
#### armor-stands.tick
```
:::tip
推荐值: false
```
:::
在大部分情况下,将该项设置为 `false` 是安全的。如果你使用盔甲架或任何相关的插件时遇到了问题,请重新启用它。
@ -844,9 +881,11 @@ tick-inactive-villagers: true
#### armor-stands.do-collision-entity-lookups
```
:::tip
推荐值: false
```
:::
是否启用盔甲架碰撞。如果你有很多盔甲架,并且不想它们与任何东西发生碰撞,这将有所帮助。
@ -858,9 +897,7 @@ tick-inactive-villagers: true
`paper-world-default.yml` 中控制红石系统使用的引擎。
```
推荐值: ALTERNATE_CURRENT
```
推荐值ALTERNATE_CURRENT
将红石系统替换为优化版本,减少冗余更新,降低服务器必须计算的逻辑量。可能会对个别的红石机器产生影响,
@ -874,9 +911,11 @@ tick-inactive-villagers: true
`paper-world-default.yml` 中控制漏斗的一个繁重的事件。
```
:::tip
推荐值: false
```
:::
仅当有插件监听 `InventoryMoveItemEvent` 时才会触发该事件。
@ -886,17 +925,21 @@ tick-inactive-villagers: true
`paper-world-default.yml` 中控制漏斗是否会忽略完整方块内的容器。
```
:::tip
推荐值: true
```
:::
降低沙子或沙砾中的漏斗矿车之类的情况,启用该项可能会破坏一些红石装置。
### tick-per
ticks-per:
hopper-transfer: 8
hopper-check: 1
```yaml
ticks-per:
hopper-transfer: 8
hopper-check: 1
```
`hopper-transfer` 控制了漏斗多少 tick 传输一次物品;
@ -925,9 +968,11 @@ tick-inactive-villagers: true
将此项设为`true`可以将原版爆炸算法替换成优化版本,略微牺牲非常小的爆炸伤害换取爆炸时的大量性能提升。
```
:::tip
推荐值: true
```
:::
# 杂项优化

View File

@ -10,10 +10,14 @@ slug: /optimize/jvm/dragonwell
## 基础
```shell
<!--markdownlint-disable line-length-->
```text
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseVectorCmov -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:ThreadPriorityPolicy=1 -XX:AllocatePrefetchStyle=3 -XX:+UseVtableBasedCHA -Dcom.alibaba.enableFastSerialization=true
```
<!--markdownlint-enable line-length-->
这些是基础参数
如果使用的是从 GitHub 下载的预览版可以添加`-XX:+UseBigDecimalOpt -XX:+ReduceNMethodSize`
@ -28,10 +32,14 @@ Dragonwell 11 的 ZGC 不同于 OpenJDK11 的 ZGCDragonwell 通过移植 Open
添加参数
<!--markdownlint-disable line-length-->
```shell
-XX:+UseG1GC -XX:MaxGCPauseMillis=130 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16 -XX:+G1BarrierSimple
```
<!--markdownlint-enable line-length-->
## 对象头压缩
可以节约10%左右的Java对象内存占用并可能提升程序性能。**目前仅支持G1GC和ParallelGC**
@ -44,6 +52,10 @@ Wisp在JVM上提供了一种用户态的线程实现。开启Wisp2后Java线
只需添加JVM参数即可开启Wisp2无需更改程序
**仅支持Linux x64**
:::tip
仅支持Linux x64
:::
添加参数`-XX:+UnlockExperimentalVMOptions -XX:+UseWisp2`

View File

@ -11,30 +11,38 @@ slug: /optimize/jvm/dragonwell8
## 基础
```shell
<!--markdownlint-disable line-length-->
```text
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+ParallelRefProcEnabled -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:+PerfDisableSharedMem -XX:+AggressiveOpts -XX:+UseFastAccessorMethods -XX:MaxInlineLevel=15 -XX:MaxVectorSize=32 -XX:+UseCompressedOops -XX:ThreadPriorityPolicy=1 -XX:+UseDynamicNumberOfGCThreads -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=350M -XX:-DontCompileHugeMethods -XX:MaxNodeLimit=240000 -XX:NodeLimitFudgeFactor=8000 -XX:+UseFPUForSpilling
```
<!--markdownlint-enable line-length-->
这些是基础参数
x86 Java 8 用户可以添加以下附加参数:
```shell
```text
-XX:+UseXMMForArrayCopy
```
如果使用的是从 GitHub 下载的预览版可以添加
```shell
```text
-XX:+UseBigDecimalOpt
```
## G1GC 参数
```shell
<!--markdownlint-disable line-length-->
```text
-XX:+UseG1GC -XX:MaxGCPauseMillis=130 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30
```
<!--markdownlint-enable line-length-->
## JWarmup
JWarmup的基本原理: 根据前一次程序运行的情况记录下热点方法、类编译顺序等信息在应用下一次启动的时候积极加载相关的类并积极编译相关的方法进而应用启动后可以直接运行编译好的Java代码(C2编译)。
@ -43,8 +51,12 @@ JWarmup的基本原理: 根据前一次程序运行的情况,记录下热点
#### 记录阶段(一般是beta环境)在5分钟后生成profiling data
<!--markdownlint-disable line-length-->
添加参数`-XX:-ClassUnloading -XX:-CMSClassUnloadingEnabled -XX:-ClassUnloadingWithConcurrentMark -XX:CompilationWarmUpLogfile=jwarmup.log -XX:+CompilationWarmUpRecording -XX:CompilationWarmUpRecordTime=300`
<!--markdownlint-enable line-length-->
#### 使用阶段(一般是生产环境)
添加参数`-XX:+CompilationWarmUp -XX:-TieredCompilation -XX:CompilationWarmUpLogfile=jwarmup.log -XX:CompilationWarmUpDeoptTime=0`
@ -61,7 +73,11 @@ Wisp在JVM上提供了一种用户态的线程实现。开启Wisp2后Java线
只需添加JVM参数即可开启Wisp2无需更改程序
**仅支持Linux x64**
:::tip
仅支持Linux x64
:::
添加参数`-XX:+UnlockExperimentalVMOptions -XX:+UseWisp2`
@ -69,6 +85,6 @@ Wisp在JVM上提供了一种用户态的线程实现。开启Wisp2后Java线
G1ElasticHeap 是一种 GC 功能,用于将 Java 堆的内存返回给操作系统,以减少 Java 进程的内存占用。要启用此功能,你需要通过以下选项使用 G1 GC
```shell
```text
-XX:+G1ElasticHeap -XX:+ElasticHeapPeriodicUncommit
```

View File

@ -6,29 +6,45 @@ slug: /optimize/jvm/graalvm
# GraalVM
::: tip
这些参数只适合 GraalVM EE
:::
## 基础参数
```shell
<!--markdownlint-disable line-length-->
```text
-XX:+UnlockExperimentalVMOptions -XX:+UnlockDiagnosticVMOptions -XX:+AlwaysActAsServerClassMachine -XX:+AlwaysPreTouch -XX:+DisableExplicitGC -XX:AllocatePrefetchStyle=3 -XX:NmethodSweepActivity=1 -XX:ReservedCodeCacheSize=400M -XX:NonNMethodCodeHeapSize=12M -XX:ProfiledCodeHeapSize=194M -XX:NonProfiledCodeHeapSize=194M -XX:-DontCompileHugeMethods -XX:+PerfDisableSharedMem -XX:+UseFastUnorderedTimeStamps -XX:+UseCriticalJavaThreadPriority -XX:+EagerJVMCI -Dgraal.TuneInlinerExploration=1 -Djdk.graal.CompilerConfiguration=enterprise
```
<!--markdownlint-enable line-length-->
## G1GC
```shell
<!--markdownlint-disable line-length-->
```text
-XX:+UseG1GC -XX:MaxGCPauseMillis=130 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16
```
<!--markdownlint-enable line-length-->
## ZGC
```shell
```text
-XX:+UseZGC -XX:AllocatePrefetchStyle=1 -XX:-ZProactive
```
**不要在 GraalVM 上使用 ZGenerational**
:::warning
## 正在考虑的标志
不要在 GraalVM 上使用 ZGenerational
:::
## 正在考虑的flag
更激进的内联,在 Graal 中通过`-Dgraal.BaseTargetSpending=160`(默认为 120)和 OpenJDK 中的其他一些标志。具有较大缓存的 CPU 可能会从中受益

View File

@ -8,18 +8,30 @@ slug: /optimize/jvm/openj9
这些参数只适合 OpenJ9
**这些参数的主要目的是降低内存占用,而非优化性能**
:::warning
这些参数的主要目的是降低内存占用,而非优化性能
:::
## 基础
```shell
<!--markdownlint-disable line-length-->
```text
-XX:+IdleTuningGcOnIdle -XX:+UseAggressiveHeapShrink -XX:-OmitStackTraceInFastThrow -XX:+UseFastAccessorMethods -XX:+OptimizeStringConcat -Xshareclasses:allowClasspaths -Xshareclasses:cacheDir=./cache -Xaot -XX:+UseCompressedOops -XX:ObjectAlignmentInBytes=256 -Xshareclasses -XX:SharedCacheHardLimit=800M -Xtune:virtualized -XX:+TieredCompilation -XX:InitialTenuringThreshold=5 -Dlog4j2.formatMsgNoLookups=true -XX:-DisableExplicitGC -XX:InitiatingHeapOccupancyPercent=35 -XX:+UnlockExperimentalVMOptions
```
<!--markdownlint-enable line-length-->
## GC
考虑到 ZGC 通常会使用更多的内存,所以推荐使用 G1GC
```shell
<!--markdownlint-disable line-length-->
```text
-XX:+UseG1GC -XX:MaxGCPauseMillis=130 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=28 -XX:G1HeapRegionSize=16M -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:SurvivorRatio=32 -XX:MaxTenuringThreshold=1 -XX:G1SATBBufferEnqueueingThresholdPercent=30 -XX:G1ConcMarkStepDurationMillis=5.0 -XX:G1ConcRefinementServiceIntervalMillis=150 -XX:G1ConcRSHotCardLimit=16 -XX:MaxGCPauseMillis=6 -Djava.net.preferIPv4Stack=true -XX:-ParallelRefProcEnabled-XX:+UseTLAB -XX:ReservedCodeCacheSize=70M -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20
```
<!--markdownlint-enable line-length-->

View File

@ -10,7 +10,7 @@ slug: /optimize/jvm/zing
## 一步到位
```
```text
-XX:ProfileLogIn=readynow -XX:ProfileLogOut=readynow -XX:+FalconUseCompileStashing -XX:+CompactStrings
```

View File

@ -33,7 +33,8 @@ sidebar_position: 1
在 Minecraft 服务器中,生成新区块会消耗大量服务器资源,如果要开启新的地图 / 服务器,建议先预生成地图。
[Chunky](https://hangar.papermc.io/pop4959/Chunky) 是最常用的预生成插件,通常与 [ChunkyBorder](https://modrinth.com/plugin/chunkyborder) 结合使用,你可以根据自己的喜好自定义边界及形状。
[Chunky](https://hangar.papermc.io/pop4959/Chunky) 是最常用的预生成插件。
通常与 [ChunkyBorder](https://modrinth.com/plugin/chunkyborder) 结合使用,你可以根据自己的喜好自定义边界及形状。
通常来说,即使你不设置边界,也务必进行预生成大约 1w x 1w 大小的世界。这对降低后期服务器负载很有效。
@ -80,7 +81,8 @@ sidebar_position: 1
## 第五步 - 更换硬件
**不要无脑换硬件!** 首先要知道自己的硬件瓶颈在哪里。如果 CPU 负荷过高,建议先排除 CPU 异常占用,再看 CPU 总体占用情况。一般来说服务器卡顿换 CPU 是最有效的,单核性能和 MC 服务器 TPS 几乎呈线性相关,但是换 CPU 几乎就相当于要换一台机器,迁移对于新手来说并不是易事。
**不要无脑换硬件!** 首先要知道自己的硬件瓶颈在哪里。如果 CPU 负荷过高,建议先排除 CPU 异常占用,再看 CPU 总体占用情况。
一般来说服务器卡顿换 CPU 是最有效的,单核性能和 MC 服务器 TPS 几乎呈线性相关,但是换 CPU 几乎就相当于要换一台机器,迁移对于新手来说并不是易事。
对于单端服务器来说,超过 8 核心的部分基本很难通过提升 CPU 核心数量提升 TPS 。不要动不动就买 E5 然后卡了就加 4 核 8G 内存,更多也没用的。
@ -100,7 +102,7 @@ sidebar_position: 1
## 第七步 - 性能分析
**“马克思主义活的灵魂在于对具体问题作具体分析。” - 列宁**
> “马克思主义活的灵魂在于对具体问题作具体分析。” - 列宁
通用优化已经差不多做好了,而每个服都有自己导致滞后的因素,可能是实体太多,可能是玩家机器多,也可能是某些插件写的太屎...

View File

@ -23,9 +23,11 @@ sidebar_position: 4
推荐两个备份插件(高效的备份,无需停服即可备份)
[ebackup](https://www.spigotmc.org/resources/ebackup-simple-and-reliable-backups-for-your-server-supports-ftp-sftp.69917/) 可设置黑名单不备份某些文件FTP 远程备份支持
[ebackup](https://www.spigotmc.org/resources/ebackup-simple-and-reliable-backups-for-your-server-supports-ftp-sftp.69917/)
可设置黑名单不备份某些文件FTP 远程备份支持
[serverbackup](https://www.spigotmc.org/resources/server-backup-ingame-dropbox-ftp-backup-1-8-1-20-multithreaded.79320/) 可支持动态备份(即只备份最近变更过的文件),占用空间更小
[serverbackup](https://www.spigotmc.org/resources/server-backup-ingame-dropbox-ftp-backup-1-8-1-20-multithreaded.79320/)
可支持动态备份(即只备份最近变更过的文件),占用空间更小
## 存档存储空间优化

View File

@ -31,13 +31,13 @@ ServerCtrl 是一个非常好用的远程管理工具,支持 WindowsLinux
把插件安装到服务端并启动,首先你会看到
```
```text
[ServerCtrl] Admin account created. Username: admin Password: TEkL341LPMPU
```
这里的`admin`是用户名,`TEkL341LPMPU`是初始密码,你可以后续进行更改,接下来你会看到
```
```text
[ServerCtrl] Webserver started on Port: 5718
```

View File

@ -7,10 +7,14 @@ sidebar_position: 5
在某些时候我们需要更改服务端版本(比如 1.20 -> 1.21),然后就会
```
<!--markdownlint-disable line-length-->
```text
[Configurations] Loading a newer configuration than is supported (31 > 30)! You may have to backup & delete the world config file to start the server.
```
<!--markdownlint-enable line-length-->
当然,可爱的 Paper 为我们准备了区块版本升级/降级工具
:::tip

View File

@ -31,7 +31,7 @@ java2bedrock.sh(俗称转换器)是一个自动资源包转换工具,可以将
本地运行你只需要执行
```
```shell
./converter.sh 资源包名称.zip
```
@ -64,11 +64,11 @@ java2bedrock.sh(俗称转换器)是一个自动资源包转换工具,可以将
:::
#### 物品映射
### 物品映射
这里我非常推荐使用[Geyser Wiki](https://wiki.geysermc.org/geyser/custom-items/)中的Json映射方式方便编写和修改
##### 注册物品行为
#### 注册物品行为
这是一个律师勋章,我想让他在基岩版上也显示
@ -92,7 +92,7 @@ java2bedrock.sh(俗称转换器)是一个自动资源包转换工具,可以将
示例:
```
```json
{
"format_version": "1",
"items": {
@ -112,7 +112,7 @@ json文件不允许有注释如果你要复制过去记得删除注释
保存然后我们的自定义物品Geyser已经注册好了接下来是基岩版资源包方面的教程
##### 制作资源包
#### 制作资源包
网上有很多制作资源包的教程,这里不多复述最基础的操作
@ -128,7 +128,7 @@ json文件不允许有注释如果你要复制过去记得删除注释
`item_textures.json` 中写入
```
```json
{
"resource_pack_name": "这里填资源包名字",
"texture_name": "atlas.items",

View File

@ -13,8 +13,8 @@ sidebar_position: 2
此插件可以修复:
* 卡在竹子和滴水石锥中无法移动
* 骑乘实体时无法正确控制方向, 在需要使用钓竿的实体上影响尤为明显
- 卡在竹子和滴水石锥中无法移动
- 骑乘实体时无法正确控制方向, 在需要使用钓竿的实体上影响尤为明显
:::warning
@ -53,26 +53,29 @@ BedrockSkinUtility仅支持 Fabric 1.20.2 以下的版本
GeyserOptionalPack是一个可选资源包
它通过资源包来实现一些Java版中独有的功能或特性
你可以在 [此处](https://download.geysermc.org/v2/projects/geyseroptionalpack/versions/latest/builds/latest/downloads/geyseroptionalpack) 下载
你可以在 [此处](https://download.geysermc.org/v2/projects/geyseroptionalpack/versions/latest/builds/latest/downloads/geyseroptionalpack)
下载。
此资源包实现了:
* 盔甲架底座武器/底板可见性
* 盔甲架姿势
* 幻术师
* 部分缺失的粒子
* 副手动画
* 潜影贝隐形平等性
* 发光箭实体纹理 (没有实体描边渲染(基岩版本身就没有),只有箭矢纹理)
* 提供超过记分板字符限制的绕过方式
* 隐藏在Java版中没有的UI元素例如
* 制图台中的文本输入字段
* 创造模式下的2x2工作台
* 命令方块菜单中的时钟延迟和重命名字段
* Java版中不存在的结构方块选项
- 盔甲架底座武器/底板可见性
- 盔甲架姿势
- 幻术师
- 部分缺失的粒子
- 副手动画
- 潜影贝隐形平等性
- 发光箭实体纹理 (没有实体描边渲染(基岩版本身就没有),只有箭矢纹理)
- 提供超过记分板字符限制的绕过方式
- 隐藏在Java版中没有的UI元素例如
- 制图台中的文本输入字段
- 创造模式下的2x2工作台
- 命令方块菜单中的时钟延迟和重命名字段
- Java版中不存在的结构方块选项
## 箱子优化
BedrockChestUI是一个用于实现自定义基岩版箱子UI行数的插件 由于基岩版原生不支持1245行的箱子所以本插件基于 ProtocolLib + 基岩版资源包实现 此插件需要Floodgate和ProtocolLib作为前置支持Minecraft版本 1.17.1-1.19.4
BedrockChestUI是一个用于实现自定义基岩版箱子UI行数的插件 由于基岩版原生不支持1245行的箱子所以本插件基于 ProtocolLib + 基岩版资源包实现 。
此插件需要Floodgate和ProtocolLib作为前置支持Minecraft版本 1.17.1-1.19.4
[下载](https://gitee.com/xi-bohan/BedrockChestUI/releases/tag/BedrockChestUI)
@ -88,8 +91,8 @@ BedrockChestUI是一个用于实现自定义基岩版箱子UI行数的插件
修复了以下问题
* 基岩玩家现在可以看到末影龙头嘴动画和猪灵头耳动画(当使用红石时)
* 横扫之刃现在可以在铁砧中使用
- 基岩玩家现在可以看到末影龙头嘴动画和猪灵头耳动画(当使用红石时)
- 横扫之刃现在可以在铁砧中使用
[下载](https://github.com/tbyt/BedrockParity/releases/tag/release)
@ -107,15 +110,15 @@ BedrockChestUI是一个用于实现自定义基岩版箱子UI行数的插件
还有!:
* Java 冷却指示器
* Java 战斗声音(横扫攻击、暴击、击退)
* 地狱顶部雾颜色修复
* 自动重新连接
* 基岩表情聊天
* 资源包加载
* 快捷菜单
* 块重影修复
* 玩家名单(类似于TAB但是BE Form)
- Java 冷却指示器
- Java 战斗声音(横扫攻击、暴击、击退)
- 地狱顶部雾颜色修复
- 自动重新连接
- 基岩表情聊天
- 资源包加载
- 快捷菜单
- 块重影修复
- 玩家名单(类似于TAB但是BE Form)
[项目地址](https://github.com/GeyserExtras/GeyserExtras)

View File

@ -13,7 +13,7 @@ sidebar_position: 3
示例:
```
```yaml
#玩家加入服务器后执行事件
on join:
trigger:

View File

@ -15,7 +15,7 @@ sidebar_position: 6
:::
#### 如何使用
### 如何使用
- 跟[这里](https://yizhan.wiki/NitWikit/process/mobile-player/Geyser/Upgrade/Custom-item-model-map#%E5%9C%A8%E7%BA%BF%E8%BD%AC%E6%8D%A2)基本没有区别

View File

@ -21,6 +21,8 @@ sidebar_position: 3
配置文件位于 Geyser 的配置文件夹中,结构如下
<!--markdownlint-disable line-length-->
```yaml
#--------------------------------
# Geyser 自定义头骨配置文件
@ -51,9 +53,10 @@ player-profiles
# Minecraft 皮肤服务器上皮肤的哈希值
skin-hashes
- a90790c57e181ed13aded14c47ee2f7c8de3533e017ba957af7bdf9df1bde94f
```
<!--markdownlint-enable line-length-->
你只需要提取出你所需要显示的头颅,根据类别添加到配置文件中,然后**重启服务端**,就可以显示
### 玩家用户名
@ -68,13 +71,18 @@ skin-hashes
头可以通过自定义玩家头部的 NBT 中的纹理字符串在此部分注册。除非手动更改该值,否则这些值不会在间歇泉启动时更新。因此,如果玩家的用户名或皮肤发生变化,它们不会改变。数据只是 base64 编码的 JSON。
如果在Paper服务器上则可以通过将项目握在手中并运行命令来获取头骨的此数据。这会将项目的 NBT 数据输出到聊天和控制台。纹理字符串位于```SkullOwner```标签下、```Properties```标签下、```textures```标签下。例如:/paper dumpitem
如果在Paper服务器上则可以通过将项目握在手中并运行命令来获取头骨的此数据。这会将项目的 NBT 数据输出到聊天和控制台。
纹理字符串位于```SkullOwner```标签下、```Properties```标签下、```textures```标签下。例如:/paper dumpitem
```
<!--markdownlint-disable line-length-->
```text
[05:58:07 INFO]: .KastleFirefox issued server command: /paper dumpitem
[05:58:07 INFO]: minecraft:player_head{display: {Name: '{"text":"Test"}'} SkullOwner: {Properties: {textures: [{Value: "ewogICJ0aW1lc3RhbXAiIDogMTY1NzMyMjIzOTgzMywKICAicHJvZmlsZUlkIiA6ICJjZGRiZTUyMGQwNDM0YThiYTFjYzlmYzkyZmRlMmJjZiIsCiAgInByb2ZpbGVOYW1lIiA6ICJkYXZjaG9vIiwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2E5MDc5MGM1N2UxODFlZDEzYWRlZDE0YzQ3ZWUyZjdjOGRlMzUzM2UwMTdiYTk1N2FmN2JkZjlkZjFiZGU5NGYiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ"}]} Id: [I; -229048314, -553040501, -1407961158, 465313087]}}
```
<!--markdownlint-enable line-length-->
### 皮肤哈希
骷髅头可以通过Minecraft皮肤服务器上的皮肤哈希值在此部分注册。这位于 URL 的末尾。
@ -91,7 +99,7 @@ skin-hashes
[下载地址](https://github.com/lilingfengdev/PlayerHeadGetterBuild/releases/tag/latest)
**Command**
### 命令
`/headgetter hand` 获取手上头颅base64
@ -101,7 +109,7 @@ skin-hashes
`/headgetter save` 导出头颅base64
**使用流程**
### 使用流程
- 先用前三个命令获取头颅
- 完事之后使用导出命令

View File

@ -3,6 +3,8 @@ title: GeyserMEG4支持
sidebar_position: 6
---
<!--markdownlint-disable no-duplicate-heading-->
# GeyserMEG4支持
## GeyserModelEngine
@ -13,12 +15,16 @@ sidebar_position: 6
### 前置
<!--markdownlint-disable line-length-->
| 前置插件 | 橡木链接 | 作用 |
| :--- | :---- | :--- |
| GeyserUtils | [GeyserUtils](https://github.com/zimzaza4/GeyserUtils) | 让你的Geyser支持调用一些BE的东西 |
| GeyserModelEngine | [GitHub](https://github.com/zimzaza4/GeyserModelEngine) | 你猜 |
| LibsDisguises(免费版即可) | [LibsDisguises](https://www.spigotmc.org/resources/libs-disguises-free.81/)| 伪装成其他生物 |
<!--markdownlint-enable line-length-->
项目地址有简体中文,所以后续步骤我就不写了
[项目地址](https://github.com/zimzaza4/GeyserModelEngine)
@ -35,6 +41,8 @@ sidebar_position: 6
### 前置
<!--markdownlint-disable line-length-->
| 前置插件 | 项目链接 | 作用 |
| :--- | :---- | :--- |
| GeyserUtils | [GitHub](https://github.com/zimzaza4/GeyserUtils) | 让你的Geyser支持调用一些BE的东西 |
@ -42,6 +50,8 @@ sidebar_position: 6
| Geyser 自定义实体分支 | [GitHub](https://github.com/zimzaza4/Geyser) | 让Geyser支持自定义实体 |
| GeyserModelEnginePackGenerator | [GitHub](https://github.com/zimzaza4/GeyserModelEnginePackGenerator) | 帮你自动转换模型生成资源包 |
<!--markdownlint-enable line-length-->
后续更多步骤请看项目地址
[项目地址](https://github.com/zimzaza4/GeyserModelEngine/tree/custom-entity)

View File

@ -4,73 +4,74 @@ sidebar_position: 3
# FAQ
### 红石是按照哪个版本工作的?
## 红石是按照哪个版本工作的?
你加入的服务器是一个 **Java版** 服务器
**红石,还有 指令、农场** 等各种机制都是按照 Java版 工作的
### 为什么基岩版玩家无法在地狱上层放置方块?
## 为什么基岩版玩家无法在地狱上层放置方块?
请查阅安装教程中Geyser配置教程其他项中的 **`above-bedrock-nether-building`**
### 在删除前缀后为什么数据还是不互通?
## 在删除前缀后为什么数据还是不互通?
Java版和基岩版的UUID不一致请查阅进阶教程
### 有时,世界跑的很远以后客户端会很卡
## 有时,世界跑的很远以后客户端会很卡
这是 **基岩版** 客户端的问题。具体请 [查看这里](https://minecraft.fandom.com/zh/wiki/%E5%9F%BA%E5%B2%A9%E7%89%88%E8%B7%9D%E7%A6%BB%E7%8E%B0%E8%B1%A1)
### frp搭建内网穿透想显示真实IP怎么办
## frp搭建内网穿透想显示真实IP怎么办
在frp中[开启proxy protocol](../../../../../advance/Linux/frp#配置proxy-protocol)后在配置文件里将enable-proxy-protocol设置为true。后续如果不再使用内网穿透**一定记得把这个配置改回false**
### 皮肤不显示怎么办
## 皮肤不显示怎么办
这可能是因为你在安装floodgate后又安装了额外的皮肤组件导致的
请查阅进阶教程
### 头颅不显示怎么办
## 头颅不显示怎么办
请查阅进阶教程
### 箱子菜单变形怎么办
## 箱子菜单变形怎么办
请查阅进阶教程
### 地狱上层雾显示不正确怎么办?
## 地狱上层雾显示不正确怎么办?
请查阅进阶教程
### 无法正常连接到服务器! (服务器在好友选项卡没有显示或者在连接服务器时出现 "无法连接到世界")
## 无法正常连接到服务器! (服务器在好友选项卡没有显示或者在连接服务器时出现 "无法连接到世界")
这个问题很复杂, 请检查以下问题是否存在:
* **是否使用了SRV**
- **是否使用了SRV**
基岩版客户端不支持 SRV 解析请让基岩版的玩家正常通过IP和端口连接服务器
* **手贱开启enable-proxy-protocol**
- **手贱开启enable-proxy-protocol**
如果你不使用像 TCPShield、frp 的反向代理,请保证你的 enable-proxy-protocol 选项是设置为 false 的
* **启动时提示 java.net.BindException: Address already in use: bind**
- **启动时提示 java.net.BindException: Address already in use: bind**
这代表 Geyser 服务器所开设的端口已被占用,请确保你关闭了所有占用该端口的软件,然后再试。如果这没有起作用,通常重启你的电脑即可解决该问题
* **你的服务商可能没有及时打开UDP端口**
- **你的服务商可能没有及时打开UDP端口**
这通常和你的主机端的端口有关。最常见的是跟Java版的常用的 TCP 协议的端口不同,你的主机很有可能没有开放基岩版所使用的 UDP 协议的端口。一个确认此问题的方法是关闭你的服务器,然后选择其他 基岩版服务端,例如 Nukkit(你不一定非要用 Nukkit)以检查是否是该问题导致的
这通常和你的主机端的端口有关。最常见的是跟Java版的常用的 TCP 协议的端口不同,你的主机很有可能没有开放基岩版所使用的 UDP 协议的端口。
一个确认此问题的方法是关闭你的服务器,然后选择其他 基岩版服务端,例如 Nukkit(你不一定非要用 Nukkit)以检查是否是该问题导致的
* **尝试重启服务器和游戏**
- **尝试重启服务器和游戏**
特别是在移动设备上,有时只需重新启动 Minecraft 即可解决问题
* **基岩端口小于10000**
- **基岩端口小于10000**
端口小于10000通常会导致问题 请将其设置为高于10000的值
* **切换连接线路**
- **切换连接线路**
这有可能是你的服务器被当前网络提供商过滤

View File

@ -4,7 +4,7 @@ sidebar_position: 2
---
# 安装
# 安装 Geyser
## 版本
@ -63,7 +63,8 @@ Standalone 版本 可以作为一个独立的代理端启动
:::
第一眼你可能会被全是英文的配置文件镇住,别急,善用翻译来理解配置文件中的注释,**在完成本教程的基础配置配置后,若需进阶,请参考 [此处](https://docs.superiormc.cn/v/geyser-wiki/user-guide/li-jie-pei-zhi) 的配置参考**
第一眼你可能会被全是英文的配置文件镇住,别急,善用翻译来理解配置文件中的注释,
**在完成本教程的基础配置配置后,若需进阶,请参考 [此处](https://docs.superiormc.cn/v/geyser-wiki/user-guide/li-jie-pei-zhi) 的配置参考**
接下来,回到配置,映入你眼帘的应该是 bedrock 和 remote 两个大项:
@ -191,7 +192,8 @@ username-prefix: "."
为什么?
因为在安装 Floodgate 后,基岩版玩家的 UUID 将会和 Java 版玩家有很大不同若是遇到重名则会出现一个ID拥有两个完全不同的UUID这可能会发生一些无法预知的错误而使用 `.` 前缀是因为 Java 正版玩家名中不可使用 `.`
因为在安装 Floodgate 后,基岩版玩家的 UUID 将会和 Java 版玩家有很大不同。
若是遇到重名则会出现一个ID拥有两个完全不同的UUID这可能会发生一些无法预知的错误而使用 `.` 前缀是因为 Java 正版玩家名中不可使用 `.`
**但是**
这在离线服中,有几个问题:
@ -245,7 +247,8 @@ send-floodgate-data: true
这样子服就可以接收到来自群组服的基岩版玩家数据了,请注意在开启此项后,若子服不安装 Floodgate 则基岩版玩家则无法进入子服,但是此项很重要,若不开启,则在子服中 Floodgate 不起效果
接下来,在子服一一安装 Floodgate 并确保和群组服的 Floodgate 配置一致,然后注意到群组端 Floodgate 配置文件夹下,理应会生成一个叫 `key.pem` 的文件,用群组服的 `key.pem` 将子服中的 `key.pem` 覆盖,确保 `key.pem` 完全相同
接下来,在子服一一安装 Floodgate 并确保和群组服的 Floodgate 配置一致,然后注意到群组端 Floodgate 配置文件夹下,理应会生成一个叫 `key.pem` 的文件。
用群组服的 `key.pem` 将子服中的 `key.pem` 覆盖,确保两个文件完全相同
即可完成群组端配置

View File

@ -11,6 +11,8 @@ GitHub Action 下载
如果你想在正式发布前测试最新、最好的版本,可以从 GitHub Actions 获取副本。
<!--markdownlint-disable ol-prefix-->
1. 首先进入 [PojavLauncher](https://github.com/PojavLauncherTeam/PojavLauncher) 软件仓库,然后切换到 `Actions` 选项卡。
![](https://pojavlauncherteam.github.io/assets/img/Android-Actions-1.96a0b3c7.png)
@ -29,4 +31,6 @@ GitHub Action 下载
![](https://pojavlauncherteam.github.io/assets/img/Android-Actions-4.07b1b65e.png)
<!--markdownlint-enable ol-prefix-->
下载完 Actions 版本后,就可以解压缩并像安装其他 .apk 文件一样进行安装了。

View File

@ -71,7 +71,8 @@ sidebar_position: 2
- iOS16 beta4iOS16.6.1(A9 以上M1M2 处理器)
- iOS17 beta1beta4(A9A11 处理器)
那么 [点此查看](https://ios.cfw.guide/installing-trollstore-trollinstallerx/) TrollInstallerX 的安装方法。**(非常之复杂,怕麻烦的,没电脑的,没有苹果官方 Type C 转 Lighting 或者 C2C 的线的,但是又只能用这个方法安装 TrollStore 的劝退)**
那么 [点此查看](https://ios.cfw.guide/installing-trollstore-trollinstallerx/) TrollInstallerX 的安装方法。
**(非常之复杂,怕麻烦的,没电脑的,没有苹果官方 Type C 转 Lighting 或者 C2C 的线的,但是又只能用这个方法安装 TrollStore 的劝退)**
如果你是:
@ -90,20 +91,23 @@ sidebar_position: 2
- iOS16.7RC(A9A11 处理器)
- iOS17 beta5iOS17.0(A9A11 处理器)
那么你需要一个**已经越狱了**的苹果设备按照 [这个教程](https://ios.cfw.guide/installing-trollstore-trollhelper/) 使用 TrollHelper 安装 TrollStore。~~(你手机都越狱了还用 TrollStore 干嘛,直接用其他 ipa/dpkg 包管理安装 Pojav~~
那么你需要一个**已经越狱了**的苹果设备按照 [这个教程](https://ios.cfw.guide/installing-trollstore-trollhelper/) 使用 TrollHelper 安装 TrollStore。
~~(你手机都越狱了还用 TrollStore 干嘛,直接用其他 ipa/dpkg 包管理安装 Pojav~~
如果你是:
- iOS15.5(A8 处理器)
- iOS15.6 beta4iOS15.6.1(A8 处理器)
那么 [点此查看](https://ios.cfw.guide/installing-trollstore-trollinstallermdc/) TrollInstallerMDC 的安装方法。**(较复杂,怕麻烦的,没电脑的,没有苹果官方 Type C 转Lighting 或者 C2C 的线的,但是又只能用这个方法安装 TrollStore 的劝退)**
那么 [点此查看](https://ios.cfw.guide/installing-trollstore-trollinstallermdc/) TrollInstallerMDC 的安装方法。
**(较复杂,怕麻烦的,没电脑的,没有苹果官方 Type C 转Lighting 或者 C2C 的线的,但是又只能用这个方法安装 TrollStore 的劝退)**
如果你是:
- iOS15.7.2iOS15.8.2(A8处理器)
那么 [点此查看](https://ios.cfw.guide/installing-trollstore-trollmisaka) TrollMisaka 的安装方法。**(也挺复杂,怕麻烦的,没电脑的,没有苹果官方 Type C 转 Lighting 或者 C2C 的线的,但是又只能用这个方法安装 TrollStore 的劝退)**
那么 [点此查看](https://ios.cfw.guide/installing-trollstore-trollmisaka) TrollMisaka 的安装方法。
**(也挺复杂,怕麻烦的,没电脑的,没有苹果官方 Type C 转 Lighting 或者 C2C 的线的,但是又只能用这个方法安装 TrollStore 的劝退)**
</details>

View File

@ -4,7 +4,7 @@ sidebar_position: 4
# CheckItem
**有关 CheckItem 的相关链接**
## 有关 CheckItem 的相关链接
:::info
@ -18,7 +18,7 @@ sidebar_position: 4
## 安装此扩展
```
```text
/papi ecloud download CheckItem
/papi reload
```
@ -27,7 +27,7 @@ sidebar_position: 4
![](_images/CheckItem/remove-item.png)
```
```text
/papi parse me %checkitem_remove_diamond%
```
@ -101,7 +101,7 @@ sidebar_position: 4
收取指定ia物品的指定数量
```
```text
%checkitem_remove_nbtstrings:itemsadder..id..data=ia物品ID,amt:数量%
```
@ -114,7 +114,7 @@ sidebar_position: 4
## 启用give和remove
```
```yaml
expansions:
checkitem:
give_enabled: false

View File

@ -13,11 +13,11 @@ sidebar_position: 2
>
> https://wiki.placeholderapi.com/users/placeholder-list/#player
```
```text
/papi ecloud download Player
```
```
```text
%player_name% - 玩家名称
%player_exp% - 玩家的exp
%player_ping% - 玩家的延迟
@ -29,11 +29,11 @@ sidebar_position: 2
>
> https://wiki.placeholderapi.com/users/placeholder-list/#server
```
```text
/papi ecloud download Server
```
```
```text
%server_online% - 服务器在线人数
%server_max_players% - 服务器最大在线人数
%server_tps% - 服务器tps
@ -48,11 +48,11 @@ sidebar_position: 2
>
> https://wiki.placeholderapi.com/users/placeholder-list/#vault
```
```text
/papi ecloud download Vault
```
```
```text
%vault_eco_balance% - 玩家的钱数
```
@ -60,11 +60,11 @@ sidebar_position: 2
>
> https://wiki.placeholderapi.com/users/placeholder-list/#multiverse-core
```
```text
/papi ecloud download multiverse
```
```
```text
%multiverse_world_alias% - 显示世界别名
```

View File

@ -2,6 +2,8 @@
sidebar_position: 5
---
# JavaScript
:::info
`eCloud` https://api.extendedclip.com/expansions/javascript

View File

@ -16,7 +16,7 @@ sidebar_position: 3
## 安装此扩展
```
```text
/papi ecloud download Math
/papi reload
```
@ -25,7 +25,7 @@ sidebar_position: 3
### 基础
```
```text
%math_你的算式%
```
@ -35,7 +35,7 @@ sidebar_position: 3
发现输出的结果有三位小数,你可以在 `plugins\PlaceholderAPI\config.yml` 中找到
```
```yaml
math:
Disable-Warnings: false
Rounding: half-up
@ -45,9 +45,9 @@ sidebar_position: 3
修改`Decimals: 3`即可修改默认输出的小数位数
**或者**
或者:
```
```text
%math_小数位数_你的算式%
```

View File

@ -2,6 +2,8 @@
sidebar_position: 8
---
# ParseOther
:::info
`eCloud` https://api.extendedclip.com/expansions/parseother

View File

@ -2,6 +2,8 @@
sidebar_position: 7
---
# 进度条
:::info
`eCloud` https://api.extendedclip.com/expansions/progress/

View File

@ -33,7 +33,7 @@ PlaceHolderAPI是一个广泛使用的变量插件它可以做到 Math(数学
`plugins\PlaceholderAPI\config.yml` 中找到
```
```yaml
boolean:
'true': 'yes'
'false': 'no'
@ -57,7 +57,7 @@ boolean:
## 下载变量扩展
```
```text
/papi ecloud download 扩展名
```

View File

@ -26,7 +26,7 @@ sidebar_position: 5
`plugins\ProtocolLib\config.yml`
```
```yaml
global:
# Settings for the automatic version updater
auto updater:

View File

@ -18,9 +18,7 @@ sidebar_position: 2
## 什么是Vault
```
Vault是一个Bukkit抽象库为其他插件提供与权限、聊天和经济有关的接口为插件们提供一套系统性的支持对于以Vault作为前置的插件来说它是各个插件之间的桥梁、合约。
```
> Vault 是一个 Bukkit 抽象库,为其他插件提供与权限、聊天和经济有关的接口,为插件们提供一套系统性的支持,对于以 Vault 作为前置的插件来说,它是各个插件之间的桥梁、合约。
人话:插件开发者要考虑的,你只管装上去就行了
@ -28,10 +26,8 @@ Vault是一个Bukkit抽象库为其他插件提供与权限、聊天和经济
不是。
```
作为被依赖的前置它可以为经济插件创建和管理虚拟经济系统使其他插件能够提供Vault与各种经济插件交互从而使它们能够共享相同的经济系统其本身并不包含经济插件功能。
```
> 作为被依赖的前置,它可以为经济插件创建和管理虚拟经济系统,使其他插件能够提供 Vault 与各种经济插件交互,从而使它们能够共享相同的经济系统,其本身并不包含经济插件功能。
人话Vault只是提供经济的插件的前置本身并不提供经济功能就是给众多经济系统提供了一个统一接口
想要经济可以看看 [这页](XConomy.md)
想要经济可以看看 [XConomy页面](XConomy.md)

View File

@ -3,6 +3,8 @@ sidebar_position: 4
sidebar_label: 查包 - InvSee++
---
<!--markdownlint-disable no-duplicate-heading-->
# InvSee++
:::info

View File

@ -12,4 +12,9 @@ sidebar_position: 2
大部分基础插件还提供了经济功能,如果你没有跨服需求,也可以尝试使用。
现有的两个较常用的基础插件,分别是 [EssentialsX](https://essentialsx.net/downloads.html) 和 [CMI](https://www.spigotmc.org/resources/cmi-298-commands-insane-kits-portals-essentials-economy-mysql-sqlite-much-more.3742/) 。
<!--markdownlint-disable line-length-->
现有的两个较常用的基础插件,分别是 [EssentialsX](https://essentialsx.net/downloads.html) 和
[CMI](https://www.spigotmc.org/resources/cmi-298-commands-insane-kits-portals-essentials-economy-mysql-sqlite-much-more.3742/) 。
<!--markdownlint-enable line-length-->

View File

@ -9,13 +9,13 @@ sidebar_position: 2
## 传送
```
```yaml
teleport-cooldown: 0
```
传送功能的冷却时间(以秒为单位),如/home /tp etc 等命令。
```
```yaml
teleport-delay: 0
```
@ -45,7 +45,7 @@ use-nbt-serialization-in-createkit: false
## AFK - 使用命令 /afk 暂时离开
```
```yaml
auto-afk: 300
```
@ -53,7 +53,7 @@ auto-afk: 300
此功能需要玩家拥有 essentials.afk.auto 权限。
设置为 -1 表示不会超时。
```
```yaml
auto-afk-kick: -1
```
@ -61,7 +61,7 @@ auto-afk-kick: -1
拥有 essentials.afk.kickexempt 权限可以避免被踢出。
设置为 -1 表示不会超时。
```
```yaml
afk-list-name: "挂机中"
```
@ -69,13 +69,13 @@ afk-list-name: "挂机中"
## 杂项
```
```yaml
death-messages: true
```
你可以在此处禁用原版的死亡消息。
```
```yaml
custom-join-message: "&e[&a+&e]&6比驿站丑的 {USERNAME} 加入了游戏"
custom-quit-message: "&e[&c-&e]&6比驿站丑的 {USERNAME} 退出了游戏"
custom-new-username-message: "&e[&a+&e]&6比驿站丑的新玩家 {USERNAME} 加入了游戏"
@ -87,7 +87,7 @@ custom-new-username-message: "&e[&a+&e]&6比驿站丑的新玩家 {USERNAME} 加
## 家
```
```yaml
spawn-if-no-home: true
```
@ -99,7 +99,7 @@ spawn-if-no-home: true
## 经济
```
```yaml
starting-balance: 0
```
@ -109,13 +109,13 @@ starting-balance: 0
注意:你需要安装 EssentialsX Spawn 才可以使用。
```
```yaml
announce-format: '&7[&b驿站&7]&a欢迎大傻蛋来服务器'
```
设置玩家进服的欢迎语。
```
```yaml
kit: tools
```
@ -127,7 +127,7 @@ kit: tools
注意:你需要安装 EssentialsX Chat 才可以使用,推荐用别的聊天插件...
```
```yaml
format: '<{DISPLAYNAME}> {MESSAGE}'
```

View File

@ -13,14 +13,14 @@ sidebar_position: 4
## 安装此扩展
```
```text
/papi ecloud download Essentials
/papi reload
```
## 变量
```
```text
%essentials_afk%
%essentials_afk_reason%
%essentials_fly%

View File

@ -3,7 +3,9 @@ title: config.yml
sidebar_position: 3
---
```
<!--markdownlint-disable line-length-->
```text
#-驿站忆行(185839426)
#-驿站忆行(185839426)
# | Notes | #

View File

@ -7,7 +7,7 @@ sidebar_position: 5
## 创建礼包
```
```text
/kitcreate <kit名字> 冷却
```
@ -21,13 +21,13 @@ sidebar_position: 5
## 获得礼包
```
```text
/kit <kit名字>
```
![](_images/kit_2.png)
**权限**
### 权限
普通玩家需要 `essentials.kit` 才可使用礼包功能
@ -39,7 +39,7 @@ sidebar_position: 5
## 删除礼包
```
```text
/deletekit <kit名字>
```
@ -68,7 +68,7 @@ sidebar_position: 5
[点击此处](PapiSupport.md)
```
```text
%essentials_has_kit_<kitname>% - 是否有XX工具包
%essentials_kit_is_available_<kitname>% - 是否可以获得XX工具包
%essentials_kit_time_until_available_<kitname>% - 礼包冷却时间

View File

@ -9,7 +9,7 @@ sidebar_position: 6
## 创建地标
```
```text
/setwarp <地标名>
```
@ -17,7 +17,7 @@ sidebar_position: 6
## 传送地标
```
```text
/warp <地标名>
```
@ -29,7 +29,7 @@ sidebar_position: 6
## 删除地标
```
```text
/delwarp <地标名>
```

View File

@ -9,13 +9,13 @@ sidebar_position: 4
### 创建
```
```text
lp creategroup 权限组名
```
### 删除
```
```text
lp deletegroup 权限组名
```
@ -23,24 +23,24 @@ lp deletegroup 权限组名
### 设置某个玩家/权限组的某权限为 true/false
```
```text
lp user/group 玩家/权限组名 permission set 权限节点 true/false
```
### 移除某个玩家/权限组的某权限的设置
```
```text
lp user/group 玩家/权限组名 permission unset 权限节点
```
### 检查某个玩家/权限组的权限状态
```
```text
lp user/group 玩家/权限组名 permission check 权限节点
```
### 列出某个玩家/权限组的权限
```
```text
lp user/group 玩家/权限组名 permission info
```

View File

@ -7,7 +7,7 @@ sidebar_position: 5
## 网页版可视化编辑器
```
```text
lp editor
```
@ -17,7 +17,7 @@ lp editor
可以实时打印权限检查情况,方便排查问题。
```
```text
lp verbose <on|record|off|upload> [filter]
```
@ -34,7 +34,7 @@ lp verbose <on|record|off|upload> [filter]
#### 例子
```
```text
lp verbose on !Luck & !anticheat
```
@ -52,7 +52,7 @@ lp verbose on !Luck & !anticheat
让玩家执行命令,并打印此命令的权限检查。
```
```text
/lp verbose command <me|player> <command>
```

View File

@ -3,6 +3,8 @@ title: 数据存储
sidebar_position: 6
---
<!--markdownlint-disable no-duplicate-heading-->
# 数据存储
这里简单介绍下 LuckPerms 一些可以用在储存数据方面的功能,以及一些简单的案例
@ -13,7 +15,7 @@ sidebar_position: 6
这些权限有着和其他权限一样的性质
**设置权限**
设置权限:
![](_images/memory_1.png)
@ -114,6 +116,8 @@ sidebar_position: 6
搓命令:
<!--markdownlint-disable line-length-->
```yaml
inline "lp user {{sender}} permission settemp nitwikit.demo true {{math 24 - time as HH}}h{{math 60 - time as mm}}m{{math 60 - time as ss}}s"
```
@ -136,6 +140,8 @@ command inline "lp user {{sender}} permission settemp nitwikit.demo true {{math
不过我不太喜欢这种做法,另一种: [案例 | 变量|每日刷新](../../../../advance/kether/variable.md#每日刷新)
<!--markdownlint-enable line-length-->
### 倒计时
和上面每日刷新一个思路
@ -152,7 +158,7 @@ command inline "lp user {{sender}} permission settemp nitwikit.demo true {{math
![](_images/memory_9.png)
```
```text
%luckperms_meta_键名%
```
@ -172,9 +178,10 @@ command inline "lp user {{sender}} permission settemp nitwikit.demo true {{math
但是使用lp的命令设置meta要写一大串不说还会输出log
好在 [Vulpecula](https://github.com/Lanscarlos/Vulpecula) 的 [memory](https://www.yuque.com/lanscarlos/vulpecula-wiki-v2/og93eqlegc0geyfi) 动作可以用来设置meta
好在 [Vulpecula](https://github.com/Lanscarlos/Vulpecula) 的
[memory](https://www.yuque.com/lanscarlos/vulpecula-wiki-v2/og93eqlegc0geyfi) 动作可以用来设置meta
```
```text
memory 键名 to 值 using lp
```
@ -182,7 +189,7 @@ memory 键名 to 值 using lp
![](_images/memory_11.png)
```
```text
memory 键名 using lp
```
@ -202,7 +209,7 @@ memory 键名 using lp
## 限时meta
```
```text
/lp user postyizhan meta settemp 键 值 时间
```

View File

@ -22,7 +22,7 @@ sidebar_position: 2
这是一个付费闭源插件GitHub上并没有上传插件本体。
```
```text
【IA入门指南.新手必看.简洁版】
-
第一步IA是基于原版的材质包框架所开发的插件所以遵守Mojang制定的材质包规范 如果你会材质包开发甚至不需要用到IA。如果你在使用IA时连CMD命名空间着色器JSON这些最基本的内容都不知道请恶补以下内容

View File

@ -21,35 +21,35 @@ sidebar_position: 7
<details>
<summary>点击展开</summary>
**全新的武器装备**
全新的武器装备:
![](_images/1.png)
**独特的装扮**
独特的装扮:
![](_images/2.png)
**新的 GUI 界面**
新的 GUI 界面:
![](_images/3.png)
**称号或表情包**
称号或表情包:
![](_images/4.png)
![](_images/5.png)
**家具或装饰**
家具或装饰:
![](_images/6.png)
**新的生物或 boss**
新的生物或 boss
![](_images/7.png)
![](_images/8.png)
**以及更多你想不到的内容**
以及更多你想不到的内容...
</details>

View File

@ -2,6 +2,8 @@
sidebar_position: 6
---
# NeigeItems
:::info
`GitHub` https://github.com/ankhorg/NeigeItems-Kotlin

View File

@ -2,6 +2,8 @@
sidebar_position: 2
---
# SX-Item
:::info
`SpigotMC` https://www.spigotmc.org/resources/.119751/

View File

@ -2,6 +2,8 @@
sidebar_position: 5
---
# Zaphkiel
:::info
`GitHub` https://github.com/TabooLib/zaphkiel

View File

@ -80,7 +80,11 @@ Multiverse-Core [4.3.1](https://www.spigotmc.org/resources/multiverse-core.390/u
# 常见问答(FAQ)
**此部分来自插件百科**
:::warning
此部分来自插件百科
:::
## 进入世界权限
@ -162,11 +166,9 @@ https://mineplugin.org/Multiverse-Core#%E4%BD%A0%E8%83%BD%E8%AE%A9%E6%AF%8F%E4%B
- [TAB和计分板插件](../other/TAB&Scoreboard/Tab&Scoreboard.md)
- 其他你想展示中文世界名的插件
**安装papi的 Multiverse 扩展**
安装 [papi 的 Multiverse 扩展](../Front-Plugin/PlaceHolderAPI/CommonUsage.md#multiverse)
[点击此处](../Front-Plugin/PlaceHolderAPI/CommonUsage.md#multiverse)
**设置别名**
### 设置别名
编辑 `plugins/Multiverse-Core/worlds.yml`
@ -214,7 +216,7 @@ worlds:
然后 `/mv reload`
**使用别名**
### 使用别名
将变量 `%multiverse_world_alias%` 写到你想展示世界别名的插件配置里

View File

@ -48,12 +48,16 @@ sidebar_position: 2
### GPT汉化
口令参考
口令参考
```
<!--markdownlint-disable line-length-->
```text
请将我给出的以 yml 格式存储的 Minecraft 插件的配置文件汉化,且不改变本身的可执行性,其中被两个 % 包裹的为变量请不要翻译,请翻译时不要带翻译腔,而是要翻译得自然、流畅和地道,使用优美和高雅的表达方式并代入 Minecraft 游戏内进行翻译,翻译后请以 markdown 代码块的格式发送
```
<!--markdownlint-enable line-length-->
备注:本教程并非推荐服主通过 GPT 等 AI 进行机翻,我们不对服主利用 AI 产生文本的行为及其内容负责。
使用 GPT 可能会被视作一种经济但欠缺考虑的行为,若有能力或财力充足,请尽力贡献人工翻译或自行翻译,万不可直接使用机翻,轻则翻译错误,重则使插件读取不了 config 。

View File

@ -5,24 +5,26 @@ sidebar_position: 2
# 自动更新
**1.修改附属的配置**
<!--markdownlint-disable ol-prefix-->
1. 修改附属的配置
将**所有附属插件**的更新关闭
以 Bump 附属为例:
```
```yaml
options:
auto-update: false
```
将 auto-update 设置为 false
**2.安装 GuizhanLibPlugin 插件**
2. 安装 GuizhanLibPlugin 插件
地址https://builds.guizhanss.com/ybw0014/GuizhanLibPlugin/master
**3.修改 GuizhanLibPlugin 的更新配置**
3. 修改 GuizhanLibPlugin 的更新配置
将 auto-update 设置为 true
@ -32,7 +34,7 @@ options:
下方配置供你参考
```
```yaml
# Whether to enable auto update module (see updater.yml for details)
# 是否开启自动更新模块(详见 updater.yml)
auto-update: true
@ -58,3 +60,5 @@ updater:
# 是否在控制台输出调试信息。
debug: false
```
<!--markdownlint-enable ol-prefix-->

View File

@ -100,7 +100,7 @@ Invero 俗称 TrMenu v4
这是 TrMenu 的一个默认案例
**右键玩家执行动作**
#### 右键玩家执行动作
https://hhhhhy.gitbook.io/trmenu-v3/usage/shortcuts
@ -112,7 +112,7 @@ https://hhhhhy.gitbook.io/trmenu-v3/usage/shortcuts
Right-Click-Player: 'open: Profile'
```
**玩家信息菜单**
#### 玩家信息菜单
https://github.com/Dreeam-qwq/TrMenu/blob/stable/v3/plugin/src/main/resources/menus/Profile.yml
@ -120,7 +120,7 @@ https://github.com/Dreeam-qwq/TrMenu/blob/stable/v3/plugin/src/main/resources/me
或者说 shift+F 打开菜单?
**蹲下+替换副手执行动作**
#### 蹲下+替换副手执行动作
https://hhhhhy.gitbook.io/trmenu-v3/usage/shortcuts
@ -215,6 +215,8 @@ https://hhhhhy.gitbook.io/trmenu-v3/usage/shortcuts
- [妙妙写法](#妙妙写法)
- [\{condition=\}条件](https://hhhhhy.gitbook.io/trmenu-v3/menu/action/option#tiao-jian)
<!--markdownlint-disable line-length-->
```yaml
'C':
display:
@ -239,6 +241,8 @@ https://hhhhhy.gitbook.io/trmenu-v3/usage/shortcuts
- tell inline 限购次数用完了 {condition=check data get meta get KEY == 0}
```
<!--markdownlint-enable line-length-->
#### 全服限购
上面个人限购的 data 改成 globaldata

View File

@ -8,7 +8,8 @@ sidebar_position: 5
## AxSmithing
在 1.20 中sb mojang 在锻造台上添加了一个新的 UI(也就是添加了锻造模板),如果你的 1.16-1.19 服务器运行 ViaBackwards那么 1.20+ 玩家将无法打开锻造台,同样的事情在 1.20+ 服务器和 1.16-1.19 客户端上也是如此。 该插件还使 1.7-1.15 客户端能够打开锻造台。( 你可以恢复到旧的 1.16-1.19 锻造台,不需要下界升级锻造模板)
在 1.20 中sb mojang 在锻造台上添加了一个新的 UI(也就是添加了锻造模板),如果你的 1.16-1.19 服务器运行 ViaBackwards那么 1.20+ 玩家将无法打开锻造台。
同样的事情在 1.20+ 服务器和 1.16-1.19 客户端上也是如此。 该插件还使 1.7-1.15 客户端能够打开锻造台。( 你可以恢复到旧的 1.16-1.19 锻造台,不需要下界升级锻造模板)
[下载地址](https://github.com/ViaVersionAddons/AxSmithing)

View File

@ -12,17 +12,13 @@ ViaRewind 可以让超低版本(1.7-1.8)客户端进入高版本服务器
### 进不去,怎么办?
去让你用这老客户端的玩家滚去吃屎
~~去让你用这老客户端的玩家滚去吃屎~~
## 进不去,怎么办?
让敢安装ViaRewind腐竹滚去吃屎
~~让敢安装ViaRewind腐竹滚去吃屎~~
## 配置文件
### ViaRewind
#### 指定 1.8.x 客户端如何查看冷却时间指示器
### 指定 1.8.x 客户端如何查看冷却时间指示器
你可以在 "标题"、"动作条"、"BOSS 条 "和 "禁用 "之间进行选择
@ -32,35 +28,31 @@ ViaRewind 可以让超低版本(1.7-1.8)客户端进入高版本服务器
cooldown-indicator: "TITLE
#### 对于 1.7.x 客户端,用生存模式取代冒险模式
### 对于 1.7.x 客户端,用生存模式取代冒险模式
如果你的服务器使用 "CanDestroy" # 或 "CanPlaceOn",请启用此选项。
或 "CanPlaceOn "标志的情况下启用此选项
replace-adventure: false
#### 1.9 版本的粒子是否会被 1.8 及更低版本的类似粒子替换。 1.8 及更低版本的类似粒子replace-particles: false
### 1.9 版本的粒子是否会被 1.8 及更低版本的类似粒子替换。 1.8 及更低版本的类似粒子replace-particles: false
replace-adventure: false
#### 客户端被踢出前所写书籍的最大页数
### 客户端被踢出前所写书籍的最大页数
max-book-pages 100
#### 在客户被踢出前,书籍页面 json (!) 字符串的最大字符数
### 在客户被踢出前,书籍页面 json (!) 字符串的最大字符数
max-book-page-length: 5000
#### 是否为 1.7.x 客户端模拟 1.8+ 版本的世界边界
### 是否为 1.7.x 客户端模拟 1.8+ 版本的世界边界
emulate-world-border: true
#### 为 1.7.x 客户端显示 1.8+ 世界边界的粒子
### 为 1.7.x 客户端显示 1.8+ 世界边界的粒子
参见 https://wiki.vg/index.php?title=Protocol&oldid=7368#Particle_2
world-border-particle fireworksSpark
### ViaRewind-Legacy-Support
没啥好改的.jpg

View File

@ -197,11 +197,12 @@ ViaVersion 是Via三件套的核心提供了向上兼容如果你想要向
### replace-pistons- 默认值false(布尔值)
此选项也会影响 1.9/1.9.1 服务器。 在 1.10.1 中Mojang 引入了一种确保特殊区块发送数据的方法。这也引入了一个崩溃问题,这意味着当发送块 36(扩展活塞特殊块)时,它会使客户端崩溃。作为故障保护,你可以启用此选项,我们将发送下面指定的替换 ID。(此问题仅在你使用特殊块 36 时才会影响你)
此选项也会影响 1.9/1.9.1 服务器。 在 1.10.1 中Mojang 引入了一种确保特殊区块发送数据的方法。这也引入了一个崩溃问题,这意味着当发送块 36(扩展活塞特殊块)时,它会使客户端崩溃。
作为故障保护,你可以启用此选项,我们将发送下面指定的替换 ID。(此问题仅在你使用36号方块时才会影响你)
### replacement-piston-id - 默认值0(整数)
启用上一个选项时,应该发送哪个块 ID默认情况下它是 air 0因为块 36 与 air 非常相似。
启用上一个选项时,应该发送哪个块 ID默认情况下它是 air 0因为36号方块与 air 非常相似。
### force-json-transform - 默认值false(布尔值)

View File

@ -19,7 +19,7 @@ McGuard 可以在不启动服务器的情况下对服务端中的全部插件进
## 下载
点击[此](https://cd.starkettle.com/MCG.jar) 下载到服务端根目录即可
下载[MCG的jar](https://cd.starkettle.com/MCG.jar) 存放到服务端根目录即可。
## 控制台模式
@ -29,7 +29,7 @@ McGuard 可以在不启动服务器的情况下对服务端中的全部插件进
当MCG控制台模式完成启动后你将见到以下字样
```
```text
[McGuard] 感谢您使用McGuard
MCGuard v-b0/r0 Author: huzpsb
请选择模式(0-标准模式 1-专家模式 2-开发者模式)
@ -39,7 +39,7 @@ MCGuard v-b0/r0 Author: huzpsb
### 结果
```
```text
[提示] 正在扫描 MCG.jar ................
[提示] 正在扫描 Vault.jar ................
[提示] 正在扫描 [C]安全测试_CoRE.jar ................
@ -55,7 +55,11 @@ MCGuard v-b0/r0 Author: huzpsb
对于存在异常的插件MCG会输出“结果展示”块。并给出异常的具体描述。
**请注意MCG不会对插件进行修改也不会对插件进行删除。你需要手动删除异常插件**
:::warning
*注意MCG不会对插件进行修改也不会对插件进行删除。你需要手动删除异常插件
:::
### 专家模式

View File

@ -9,6 +9,8 @@ sidebar_position: 1
我们在此以 spigotmc.org 为例(假设你已经注册成功),讲解如何选择插件。
<!--markdownlint-disable ol-prefix-->
1. (_可选推荐_)安装一个 SpigotMC 专用的[搜索引擎](https://fof1092.de/Plugins/SSE/Redirect/),作为浏览器插件安装即可。
使用 SpigotSearchEngine(SpigotMC 搜索引擎)后, 你能得到比 SpigotMC 自带的搜索相关性强得多的搜索结果。
@ -17,7 +19,7 @@ sidebar_position: 1
![](_images/概览/浏览器翻译.png)
4. 就像逛淘宝一样,根据你的需求将你认为有用的插件收藏起来。
3. 就像逛淘宝一样,根据你的需求将你认为有用的插件收藏起来。
最好是分门别类放在一起,我们以随机 TP 插件为例,我们在此搜索 RTP
<details>
@ -47,6 +49,8 @@ sidebar_position: 1
![](_images/概览/同类插件评分选择.png)
<!--markdownlint-enable ol-prefix-->
**_不要装多个同类型插件不要把 CMI 和 EssentialX 装在一起,也不要一个服务器装 3 ~ 4 个菜单插件_**
## 如何下载插件历史版本?

View File

@ -109,7 +109,7 @@ sidebar_position: 3
如果插件的 `plugin.yml` 里没有此项,你可以试着手动添加。
```
```yaml
folia-supported: true
```

View File

@ -12,7 +12,7 @@ sidebar_position: 1
![](_images/概览/餐叉.jpg)
**建议阅读**
建议阅读:
- [YAML 语法](/docs-java/advance/YAML/YAML.md) - 了解大部分插件配置文件的语法。
- [插件特征文件](/docs-java/process/plugin/plugin-signature-file.md) - 了解插件的一些信息。

View File

@ -93,6 +93,6 @@ build.xml就已不能正常完成构建 Residence 的任务了,不过,也有
以下是 [LuckPerms](../ManageTool/Permission/WhatIsPermission.md) 权限插件禁用相关权限的命令示例:
```
```text
lp group default permission set residence.command.bank false
```

View File

@ -70,5 +70,3 @@ Fabric 拥有大量的优化效果较好的 Mod ,较为出名的有元素周
Bukkit + Forge = Catserver
Paper(部分) + Forge = Mohist
_WIP_

View File

@ -5,11 +5,14 @@ sidebar_position: 2
# 连接服务器
Linux 系统上有一个工具被业界广泛使用,它就是 `ssh`。它虽然不能远程控制桌面,但是可以远程登录服务器的命令行,并让服务器执行一些命令。由于 `ssh` 非常常用现在很多Linux发行版都已经默认集成了这个命令目前使用最广的提供 ssh 命令的软件是 **OpenSSH**
Linux 系统上有一个工具被业界广泛使用,它就是 `ssh`。它虽然不能远程控制桌面,但是可以远程登录服务器的命令行,并让服务器执行一些命令。由于 `ssh` 非常常用现在很多Linux发行版都已经默认集成了这个命令。
目前使用最广的提供 ssh 命令的软件是 **OpenSSH**
## 开启ssh服务
为了让客户能顺利连接服务器云服务器的sshd服务一般默认开启。如果你使用的是家里云或者云服务器的sshd服务确实没有开启(比如你是只能通过服务商提供的VNC或者第三方远控软件连接的服务器无法使用ssh)那么你可能需要先开启sshd服务才能连接到服务器。在主流的使用 Systemd 的Linux发行版中执行`systemctl start sshd`命令即可开启 sshd 服务,如果这些命令都报错,证明 sshd 服务存在问题,你可以把报错复制粘贴到搜索引擎上查询怎么修复这个问题。开启 sshd 服务后,你就可以连接到这台服务器了。
为了让客户能顺利连接服务器云服务器的sshd服务一般默认开启。如果你使用的是家里云或者云服务器的sshd服务确实没有开启(比如你是只能通过服务商提供的VNC或者第三方远控软件连接的服务器无法使用ssh)那么你可能需要先开启sshd服务才能连接到服务器。
在主流的使用 Systemd 的Linux发行版中执行`systemctl start sshd`命令即可开启 sshd 服务,如果这些命令都报错,证明 sshd 服务存在问题,你可以把报错复制粘贴到搜索引擎上查询怎么修复这个问题。
开启 sshd 服务后,你就可以连接到这台服务器了。
成功开启ssh服务后如果要从公网连接你还需要把ssh服务的端口`22`开放到公网。开放的方法与开放 Windows 的远程桌面端口的方式完全相同,但是协议只需要 TCP 即可。
@ -41,7 +44,9 @@ Linux 系统上有一个工具被业界广泛使用,它就是 `ssh`。它虽
ssh <username>@<address> [-p port]
```
如何要指定端口,你需要指定端口参数。在一些操作系统上这个参数是`-p`,例如`ssh root@yizhan.wiki -p 48291`,有一些工具上则是直接在后面输入端口,例如 Xshell 是`ssh root@yizhan.wiki 48291`。你需要根据不同的工具的使用方式来确定ssh的命令格式。比如你可以仅执行 `ssh` 命令(等价于 `ssh --help`),然后让 ssh 工具提示你如何使用当前工具的这个命令,如果需要更详细的说明可以输入命令 `man ssh`
如何要指定端口,你需要指定端口参数。在一些操作系统上这个参数是`-p`,例如`ssh root@yizhan.wiki -p 48291`,有一些工具上则是直接在后面输入端口。
例如 Xshell 是`ssh root@yizhan.wiki 48291`。
你需要根据不同的工具的使用方式来确定ssh的命令格式。比如你可以仅执行 `ssh` 命令(等价于 `ssh --help`),然后让 ssh 工具提示你如何使用当前工具的这个命令,如果需要更详细的说明可以输入命令 `man ssh`
在输入完这行命令后,服务器通常会要求你输入该用户的密码。
@ -133,4 +138,4 @@ macOS 内置 ssh 命令我们可以用终端来执行它。要打开macos上
</TabItem>
</Tabs>
<!--除了ssh之外还有一种远程桌面叫VNC。VNC是一种远程桌面协议在Linux上的使用尤其广泛也可以用作包括Windows在内的其他系统。由于VNC没有业界采用极其广泛的具体软件这里不介绍广泛使用的软件具体要使用可以上网搜索相关的软件和教程。 -->
除了ssh之外还有一种远程桌面叫 VNC。VNC 是一种远程桌面协议,在 Linux 上的使用尤其广泛,也可以用作包括 Windows 在内的其他系统。由于 VNC 没有业界采用极其广泛的具体软件,这里不介绍广泛使用的软件,具体要使用可以上网搜索相关的软件和教程。

View File

@ -143,6 +143,10 @@ crontab -e
2. 将备份文件解压:`tar -zxvf 备份文件名.tar.gz`
3. 将解压后的文件覆盖到服务器目录:`cp -r 解压后的文件路径/* 服务器目录`。
<!--markdownlint-disable line-length-->
> 如果你恢复存档后启动服务器报错:
> `[main/FATAL]: Failed to start the minecraft server net.minecraft.util.SessionLock$ExceptionWorldConfict: /home/minecraft/lobby/./world/session.lock: already locked (possibly by other Minecraft instance?)`
> 请检查 `world` 存档下是否存在 `session.lock` 文件,如果存在请删除,然后重启服务器。
<!--markdownlint-enable line-length-->

View File

@ -18,7 +18,7 @@ sidebar_position: 7
5. 节点:由于内网穿透是客户端向节点发送数据后节点再向服务器发送数据,和客户端与服务器直接通信相比,数据需要在节点上绕一下,这样一来延迟到来到了客户端到节点的延迟和服务端到节点延迟的总和。
<details>
<summary>如何选择合适的节点?</summary>
<summary>如何选择合适的节点?</summary>
根据三角形两边之和大于第三边的定理节点距离客户端或服务端越近游戏延迟就越小。然而你无法确定客户端的地理位置毕竟玩家来自大江南北。那么只有缩短节点与服务器之间的距离才能保证所有玩家的延迟都最低。例如服务器位于河北有两个节点分别位于山东枣庄和江苏宿迁有两个玩家分别位于广东和辽宁那么当选择离服务器更近的枣庄节点时假设辽宁玩家到节点为20ms广东玩家到节点为50ms服务器到节点为10ms那么辽宁玩家的游戏延迟就是20+10=30ms广东玩家的游戏延迟就是50ms+10ms=60ms。当选择离服务器更远的宿迁节点时假设辽宁玩家到节点为40ms广东玩家到节点为30ms服务器到节点为30ms那么辽宁玩家的游戏延迟就是50+30=70ms广东玩家的游戏延迟就是40+30=60ms。选择宿迁节点时虽然广东玩家的延迟不变但是辽宁玩家连接服务器时数据从更远的宿迁绕了一圈再回来延迟高了很多。因此选择运营商时优先选择拥有离自己近的节点的运营商。
</details>
@ -37,133 +37,152 @@ import TabItem from '@theme/TabItem';
### 安装 Frp
<!--markdownlint-disable ol-prefix-->
1. 首先确保服务器所有软件包是最新的:
不同的 Linux 发行版更新方法大同小异
<Tabs>
<TabItem value="debian" label="Debian/Ubuntu Linux" default>
```bash
apt-get update && apt-get upgrade -y
```
</TabItem>
<TabItem value="redhat" label="CentOS/Redhat Linux">
```bash
yum -y update
```
</TabItem>
<TabItem value="arch" label="Arch Linux">
```bash
pacman -Syu
```
</TabItem>
<TabItem value="debian" label="Debian/Ubuntu Linux" default>
```bash
apt-get update && apt-get upgrade -y
```
</TabItem>
<TabItem value="redhat" label="CentOS/Redhat Linux">
```bash
yum -y update
```
</TabItem>
<TabItem value="arch" label="Arch Linux">
```bash
pacman -Syu
```
</TabItem>
</Tabs>
2. 将`frp.go`软件安装到系统中:
<Tabs>
<TabItem value="others" label="deb和rht系的 Linux" default>
手动下载frp软件包
<TabItem value="others" label="deb和rht系的 Linux" default>
手动下载frp软件包
```bash
cd ~
wget https//github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
```
```bash
cd ~
wget https//github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz
```
解压:
解压:
```bash
tar -xzvf frp_0.58.1_linux_amd64.tar.gz
```
```bash
tar -xzvf frp_0.58.1_linux_amd64.tar.gz
```
安装:
安装:
<Tabs>
<TabItem value="server" label="服务端" default>
```bash
cd ~/frp_0.58.1_linux_amd64/
cp frps /usr/bin/
mkdir -p /etc/frp
cp frps.toml /etc/frp/
```
</TabItem>
<TabItem value="client" label="客户端" default>
```bash
cd ~/frp_0.58.1_linux_amd64/
cp frpc /usr/bin/
mkdir -p /etc/frp
cp frpc.toml /etc/frp/
```
</TabItem>
</Tabs>
<Tabs>
<TabItem value="server" label="服务端" default>
</TabItem>
<TabItem value="arch" label="Arch Linux">
```bash
cd ~/frp_0.58.1_linux_amd64/
cp frps /usr/bin/
mkdir -p /etc/frp
cp frps.toml /etc/frp/
```
在 Arch Linux 下可以直接用aur助手通过包管理器安装frp
</TabItem>
<TabItem value="client" label="客户端" default>
```bash
# 使用你的aur助手这里列举了paru的
paru -Sy frps # 服务器上运行这个
paru -Sy frpc # 客户机上运行这个
```
</TabItem>
```bash
cd ~/frp_0.58.1_linux_amd64/
cp frpc /usr/bin/
mkdir -p /etc/frp
cp frpc.toml /etc/frp/
```
</TabItem>
</Tabs>
</TabItem>
<TabItem value="arch" label="Arch Linux">
在 Arch Linux 下可以直接用aur助手通过包管理器安装frp
```bash
# 使用你的aur助手这里列举了paru的
paru -Sy frps # 服务器上运行这个
paru -Sy frpc # 客户机上运行这个
```
</TabItem>
</Tabs>
<!--markdownlint-enable ol-prefix-->
### 配置 Frp
<Tabs>
<TabItem value="server" label="服务端" default>
```bash
vim /etc/frp/frps.toml
```
<TabItem value="server" label="服务端" default>
写入如下内容:
```bash
vim /etc/frp/frps.toml
```
```toml
bindPort = 7000 # frps监听的端口
写入如下内容:
log.to = "/var/log/frps.log" # 日志存放路径,一般不用改
log.level = "info" # 日志等级,不用改
log.maxDays = 3
```toml
bindPort = 7000 # frps监听的端口
auth.token = "example" # 身份验证令牌frpc要与frps一致
```
</TabItem>
<TabItem value="client" label="客户端">
```bash
vim ~/frp_0.58.1_linux_amd64/frpc.toml
```
log.to = "/var/log/frps.log" # 日志存放路径,一般不用改
log.level = "info" # 日志等级,不用改
log.maxDays = 3
输入以下内容:
auth.token = "example" # 身份验证令牌frpc要与frps一致
```
```toml
serverAddr = "x.x.x.x" # 你frps服务器的ip地址
serverPort = 7000 # 你frps服务开在的端口
</TabItem>
<TabItem value="client" label="客户端">
log.to = "/var/log/frps.log" # 日志存放路径,一般不用改
log.level = "info" # 日志等级,不用改
log.maxDays = 3
```bash
vim ~/frp_0.58.1_linux_amd64/frpc.toml
```
auth.token = "example" # 令牌,与公网服务端保持一致
输入以下内容:
[[proxies]]
name = "mc je"
type = "tcp" # java版使用tcp协议通信不可更改
localIP = "127.0.0.1" # 默认不用改
localPort = 25565 # mc服务端开在哪个端口
remotePort = 25565 # 暴露服务的公网入口
```toml
serverAddr = "x.x.x.x" # 你frps服务器的ip地址
serverPort = 7000 # 你frps服务开在的端口
# 如果你开了互通,要基岩支持
[[proxies]]
name = "mc be"
type = "udp" # 基岩版使用udp协议通信不可更改
localIP = "127.0.0.1"
localPort = 19132
remotePort = 19132
```
</TabItem>
log.to = "/var/log/frps.log" # 日志存放路径,一般不用改
log.level = "info" # 日志等级,不用改
log.maxDays = 3
auth.token = "example" # 令牌,与公网服务端保持一致
[[proxies]]
name = "mc je"
type = "tcp" # java版使用tcp协议通信不可更改
localIP = "127.0.0.1" # 默认不用改
localPort = 25565 # mc服务端开在哪个端口
remotePort = 25565 # 暴露服务的公网入口
# 如果你开了互通,要基岩支持
[[proxies]]
name = "mc be"
type = "udp" # 基岩版使用udp协议通信不可更改
localIP = "127.0.0.1"
localPort = 19132
remotePort = 19132
```
</TabItem>
</Tabs>
### 开启 Frp
@ -175,125 +194,144 @@ import TabItem from '@theme/TabItem';
2. systemd 省心,有点复杂
<Tabs>
<TabItem value="screen" label="Screen" default>
<TabItem value="screen" label="Screen" default>
确保你的系统上有`screen`包,没有的话安装它们:
确保你的系统上有`screen`包,没有的话安装它们:
<Tabs>
<TabItem value="debian" label="Debian/Ubuntu Linux" default>
```bash
apt-get install screen
```
</TabItem>
<TabItem value="redhat" label="CentOS/Redhat Linux">
```bash
yum install screen
```
</TabItem>
<TabItem value="arch" label="Arch Linux">
```bash
pacman -Sy screen
```
</TabItem>
</Tabs>
<Tabs>
<TabItem value="debian" label="Debian/Ubuntu Linux" default>
启动:
```bash
apt-get install screen
```
```bash
screen -dR frps frps # 服务端
screen -dR frpc frpc # 客户端
# 键盘上按Ctrl+A+D退出
```
</TabItem>
<TabItem value="systemd" label="Systemd">
</TabItem>
<TabItem value="redhat" label="CentOS/Redhat Linux">
在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。
```bash
yum install screen
```
<Tabs>
<TabItem value="server" label="服务端" default>
1. 创建 systemd 单元文件:
</TabItem>
<TabItem value="arch" label="Arch Linux">
```bash
vim /etc/systemd/system/frps.service
```
```bash
pacman -Sy screen
```
```
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
</TabItem>
</Tabs>
[Service]
Type = simple
ExecStart = /usr/bin/frps -c /etc/frp/frps.toml
启动:
[Install]
WantedBy = multi-user.target
```
```bash
screen -dR frps frps # 服务端
screen -dR frpc frpc # 客户端
# 键盘上按Ctrl+A+D退出
```
2. 使用 systemd 命令管理 frps 服务
</TabItem>
<TabItem value="systemd" label="Systemd">
```bash
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
```
在 Linux 系统下,使用 systemd 可以方便地控制 frps 服务端的启动、停止、配置后台运行以及开机自启动。
3. 设置 frps 开机自启动
<Tabs>
<TabItem value="server" label="服务端" default>
```bash
sudo systemctl enable frps
```
</TabItem>
<TabItem value="client" label="客户端" default>
1. 创建 systemd 单元文件:
<!--markdownlint-disable ol-prefix-->
```bash
vim /etc/systemd/system/frpc.service
```
1. 创建 systemd 单元文件:
```
[Unit]
# 服务名称,可自定义
Description = frp client
After = network.target syslog.target
Wants = network.target
```bash
vim /etc/systemd/system/frps.service
```
[Service]
Type = simple
ExecStart = /usr/bin/frpc -c /etc/frp/frpc.toml
```ini
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Install]
WantedBy = multi-user.target
```
[Service]
Type = simple
ExecStart = /usr/bin/frps -c /etc/frp/frps.toml
2. 使用 systemd 命令管理 frpc 服务
[Install]
WantedBy = multi-user.target
```
```bash
# 启动frp
sudo systemctl start frpc
# 停止frp
sudo systemctl stop frpc
# 重启frp
sudo systemctl restart frpc
# 查看frp状态
sudo systemctl status frpc
```
2. 使用 systemd 命令管理 frps 服务
3. 设置 frpc 开机自启动
```bash
# 启动frp
sudo systemctl start frps
# 停止frp
sudo systemctl stop frps
# 重启frp
sudo systemctl restart frps
# 查看frp状态
sudo systemctl status frps
```
```bash
sudo systemctl enable frpc
```
</TabItem>
</Tabs>
</TabItem>
3. 设置 frps 开机自启动
```bash
sudo systemctl enable frps
```
<!--markdownlint-enable ol-prefix-->
</TabItem>
<TabItem value="client" label="客户端" default>
<!--markdownlint-disable ol-prefix-->
1. 创建 systemd 单元文件:
```bash
vim /etc/systemd/system/frpc.service
```
```ini
[Unit]
# 服务名称,可自定义
Description = frp client
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
ExecStart = /usr/bin/frpc -c /etc/frp/frpc.toml
[Install]
WantedBy = multi-user.target
```
2. 使用 systemd 命令管理 frpc 服务
```bash
# 启动frp
sudo systemctl start frpc
# 停止frp
sudo systemctl stop frpc
# 重启frp
sudo systemctl restart frpc
# 查看frp状态
sudo systemctl status frpc
```
3. 设置 frpc 开机自启动
```bash
sudo systemctl enable frpc
```
<!--markdownlint-enable ol-prefix-->
</TabItem>
</Tabs>
</TabItem>
</Tabs>
### 配置proxy protocol
@ -302,7 +340,7 @@ import TabItem from '@theme/TabItem';
[SakuraFrp](https://doc.natfrp.com/bestpractice/realip.html#proxy-protocol)
[OpenFrp](https://openfrp.wiki/use/proxy-protocol.html#%E8%8E%B7%E5%8F%96%E8%AE%BF%E9%97%AE%E8%80%85%E7%9A%84%E7%9C%9F%E5%AE%9E-ip)
如果是自建内网穿透,那么如果是 ini 配置文件就在frpc隧道对应的配置(位于frpc.ini中)中加入一行`proxy_protocol_version =`,如果是协议 v1 就写等于 v1 v2 就写等于 v2 。例如:
如果是自建内网穿透,那么如果是 ini 配置文件就在frpc隧道对应的配置(位于frpc.ini中)中加入一行`proxy_protocol_version =`,如果是协议 v1 就写等于 v1 v2 就写等于 v2 。例如:
```ini
[mc]

View File

@ -36,7 +36,7 @@ import TabItem from '@theme/TabItem';
screen 的基础指令:
```
```shell
screen -ls # 列出所有的 screen
screen -S xxx # 创建一个名叫 xxx 的虚拟窗口(推荐以每个子服务器命名)
screen -r xxx # 进入 xxx 虚拟窗口(只能进入已创建且无人使用的 screen)
@ -66,7 +66,7 @@ vim ~/.config/systemd/user/mc.service
文件中的内容按以下配置
```
```ini
[Unit]
Description=Minecraft Server
After=network.target

View File

@ -1,12 +1,12 @@
---
title: 开服
title: 启动服务器
sidebar_position: 3
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
# 开服
# 启动服务器
开服之前,请检查服务器是否安装了 Java在终端输入
@ -14,7 +14,7 @@ import TabItem from '@theme/TabItem';
如果你看到类似以下的输出,那么服务器中已经安装了 Java
```
```text
openjdk version "21.0.2" 2024-01-16 LTS
OpenJDK Runtime Environment Zulu21.32+17-CA (build 21.0.2+13-LTS)
OpenJDK 64-Bit Server VM Zulu21.32+17-CA (build 21.0.2+13-LTS mixed mode sharing)
@ -113,7 +113,7 @@ OpenJDK 64-Bit Server VM Zulu21.32+17-CA (build 21.0.2+13-LTS mixed mode s
`vim ~/.bashrc` 在这个文件末尾追加
```
```shell
# java
alias java8='/usr/lib/jvm/zulu-8/bin/java'
alias java17='/usr/lib/jvm/zulu-17/bin/java'
@ -123,11 +123,15 @@ alias java17='/usr/lib/jvm/zulu-17/bin/java'
- 使用 Java8 开服:
java8 -jar example.jar
```shell
java8 -jar example.jar
```
- 使用 Java17 开服:
java17 -jar example.jar
```shell
java17 -jar example.jar
```
## 开服
@ -145,7 +149,7 @@ TODO - 完善和排版
使用 chmod 命令给脚本增加运行权限
```
```shell
chmod +x example.sh
```

View File

@ -11,7 +11,8 @@ sidebar_position: 1
请一定要使用小号来搭建 QQ 机器人,否则如果登录不成功或是成功后被检测,将有大概率导致封号。
使用如 go-cqhttp 的 [签名服务](https://mirai.mamoe.net/topic/2373/%E5%85%B3%E4%BA%8E%E7%AD%BE%E5%90%8D%E6%9C%8D%E5%8A%A1) 不稳定并且非常容易导致封号,推荐使用 LLOneBot 这类通过 hook 官方客户端而跳过使用签名服务登录的方案。
使用如 go-cqhttp 的 [签名服务](https://mirai.mamoe.net/topic/2373/%E5%85%B3%E4%BA%8E%E7%AD%BE%E5%90%8D%E6%9C%8D%E5%8A%A1) 不稳定并且非常容易导致封号。
推荐使用 LLOneBot 这类通过 hook 官方客户端而跳过使用签名服务登录的方案。
:::
@ -26,7 +27,8 @@ sidebar_position: 1
|原理|破解 QQ 客户端|
|---|:---|
LiteLoaderQQNT 是 [利用 NTQQ 特性](https://github.com/Mrs4s/go-cqhttp/issues/2471) 实现的 QQ **插件加载器**。它本身并不具备QQ机器人功能你需要**为其安装 LLOneBot 插件**才能开始使用 QQ 机器人功能。
LiteLoaderQQNT 是 [利用 NTQQ 特性](https://github.com/Mrs4s/go-cqhttp/issues/2471) 实现的 QQ **插件加载器**
它本身并不具备QQ机器人功能你需要**为其安装 LLOneBot 插件**才能开始使用 QQ 机器人功能。
:::warning
@ -36,7 +38,8 @@ LiteLoaderQQNT 是 [利用 NTQQ 特性](https://github.com/Mrs4s/go-cqhttp/issue
前往 [LiteLoaderQQNT官网](https://liteloaderqqnt.github.io/) ,根据其教程下载安装该框架。
安装完成后,根据 [LiteLoaderQQNT 文档安装插件方法](https://liteloaderqqnt.github.io/guide/plugins.html) 为框架安装插件:[LLOneBot](https://github.com/LLOneBot/LLOneBot/tree/main)。如果你已经在使用该框架并且已安装了 [插件列表查看](https://github.com/ltxhhz/LL-plugin-list-viewer/tree/main) 插件,也可以直接使用该插件进行安装。
安装完成后,根据 [LiteLoaderQQNT 文档安装插件方法](https://liteloaderqqnt.github.io/guide/plugins.html) 为框架安装插件:[LLOneBot](https://github.com/LLOneBot/LLOneBot/tree/main)。
如果你已经在使用该框架并且已安装了 [插件列表查看](https://github.com/ltxhhz/LL-plugin-list-viewer/tree/main) 插件,也可以直接使用该插件进行安装。
安装完成后,进入 QQ 设置,在侧边栏中找到 LLOneBot 点击切换到其设置页,然后 **根据机器人给出的文档** 进行配置。
@ -87,7 +90,8 @@ Mirai 原生由于本身为协议库原理,近期因不可抗力导致难以
:::
如果发现 Mirai 的 **帐号登录** 对于你的服务器来说难以使用和维护,可以使用 [Overflow(OneBot)](https://github.com/MrXiaoM/Overflow) 将 Mirai 接入其他 OneBot 框架,而不是直接通过 Mirai 登录。
如果发现 Mirai 的 **帐号登录** 对于你的服务器来说难以使用和维护,可以使用 [Overflow(OneBot)](https://github.com/MrXiaoM/Overflow)
将 Mirai 接入其他 OneBot 框架,而不是直接通过 Mirai 登录。
**[Overflow 使用方法](https://github.com/MrXiaoM/Overflow/blob/main/docs/UserManual.md)**

View File

@ -7,11 +7,11 @@ sidebar_position: 2
指 Serein 这类不依赖插件模组加载器的独立软件,通常是通过读取控制台和执行控制台命令实现
### Serein
## Serein
待补充<!--Serein只是听说可以通过安装插件来实现机器人-->
### DLS
## DLS
类似 Serein 的自动管理控制台的一站式解决方案,几乎全部功能均依赖正则表达式匹配控制台输出的原理。目前已经适配大多数主流服务器的控制台,支持 OneBot 协议。

View File

@ -14,13 +14,13 @@ sidebar_position: 4
2. 使用以下命令格式进行备份:
```
```shell
mysqldump -u [用户名] -p [数据库名] > [备份文件名].sql
```
例如:
```
```shell
mysqldump -u root -p mydb > mydb_backup.sql
```
@ -36,13 +36,13 @@ sidebar_position: 4
要还原备份,可以使用以下命令:
```
```shell
mysql -u [用户名] -p [数据库名] < [备份文件名].sql
```
例如:
```
```shell
mysql -u root -p mydb < mydb_backup.sql
```

View File

@ -244,13 +244,17 @@ innodb_lock_wait_timeout = 120
:::info
<!--markdownlint-disable line-length-->
|配置名称 | 作用 | 默认值 | 推荐值 |
|---------------|----------------|-----------------|------------|
|`wait_timeout` | 此项设置 MySQL 在关闭一个非交互的连接之前所要等待的秒数,也就是一项连接如果空闲时间超过设置的值,连接就会被自动关闭,这时候你的插件就会疯狂报错烦死你,建议调大一点。但是太大也不行,否则会严重拖累性能 | `wait_timeout=28800` | 86400
|`wait_timeout` | 此项设置 MySQL 在关闭一个非交互的连接之前所要等待的秒数,也就是一项连接如果空闲时间超过设置的值,连接就会被自动关闭,这时候你的插件就会疯狂报错烦死你,建议调大一点。但是太大也不行,否则会严重拖累性能 | `wait_timeout=28800` | 86400 |
|`interactive_timeout` | 此项设置 MySQL 关闭一个交互的连接之前所要等待的秒数,需要注意的是, `wait_timeout``interactive_timeout` 需要同时设置,否则不会生效 | `interactive_timeout=28800`| 86400 |
|`max_allowed_packet` | 有时候你的插件会告诉你 `Package for query is too large` 那么这个时候你就需要调大这个值了,这一项规定了 MySQL 传输过程中最大允许的包的大小 | `max_allowed_packet=1M` | 看情况 |
|`max_connections` | 这一项设置 MySQL 的最大连接数,如果连接数到达这个数值,就无法创建新的连接,这个时候你的插件通常会报错,告诉你 `max_connections` 满了 | `max_connections=90` | 32768 |
<!--markdownlint-enable line-length-->
:::
### MariaDB

View File

@ -4,6 +4,8 @@ slug: /database/manage
sidebar_position: 2
---
<!--markdownlint-disable no-duplicate-heading-->
## 数据库管理
## 使用数据库管理软件管理
@ -28,7 +30,7 @@ sidebar_position: 2
**Navicat** 是一款企业级的简单易用的数据库管理软件
**优势**
#### 优势
- 简单易用,并且功能齐全
@ -36,11 +38,11 @@ sidebar_position: 2
- premium 版本支持多种数据库的管理,如 MySQL 、 MangoDB 等
**劣势**
#### 劣势
- 收费,而且不便宜
**教程**
#### 教程
<details>
<summary>连接数据库</summary>
@ -118,7 +120,7 @@ GitHub https://github.com/HeidiSQL/HeidiSQL
**HeidiSQL** 是一款开源的简易数据库管理软件
**优势**
#### 优势
- 简单好用,基本功能齐全
@ -126,17 +128,17 @@ GitHub https://github.com/HeidiSQL/HeidiSQL
- 支持多种数据库的管理,如 MySQL 、 MangoDB 等
**劣势**
#### 劣势
- 没有?
**教程**
#### 教程
TODO
### 小皮数据库
**教程**
#### 教程
<details>
<summary>配置数据库</summary>
@ -151,7 +153,7 @@ TODO
推荐 Linux 用户使用
**教程**
#### 教程
<details>
<summary>配置数据库</summary>
@ -172,7 +174,8 @@ PS: 这年头谁还用指令管理数据库啊
CREATE DATABASE <数据库名称> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
```
解释: `CHARACTER SET utf8mb4` 将数据库字符集设置为 utf8mb4 能够存储包括表情符号在内的所有 Unicode 字符。 `utf8mb4_general_ci` 是一种不区分大小写(case-insensitive)的排序规则,如果你想区分大小写,可以改为 `utf8mb4_bin``_bin` 意为以二进制方式比较字符。
解释: `CHARACTER SET utf8mb4` 将数据库字符集设置为 utf8mb4 能够存储包括表情符号在内的所有 Unicode 字符。
`utf8mb4_general_ci` 是一种不区分大小写(case-insensitive)的排序规则,如果你想区分大小写,可以改为 `utf8mb4_bin``_bin` 意为以二进制方式比较字符。
:::
@ -190,7 +193,8 @@ TODO
我们来一一介绍他们的用途
- enabled: 是否启用 MySQL 存储数据?如果是请填 true ,否则填 false ,默认是 false ,而且有些插件是直接让你填写数据库类型的,默认是 SQLite ,对于这种配置文件,请把 SQLite 改成 MySQL 或者其他你使用的数据库名
- enabled: 是否启用 MySQL 存储数据?如果是请填 true ,否则填 false ,默认是 false ,而且有些插件是直接让你填写数据库类型的,默认是 SQLite 。
对于这种配置文件,请把 SQLite 改成 MySQL 或者其他你使用的数据库名。
- host: 也就是主机地址,如果数据库在本地,请填 localhost

View File

@ -75,11 +75,14 @@ sidebar_position: 6
### 计算资源
你需要一台电脑来运行服务器软件,这台电脑可以是你自己的电脑,也可以是你购买的云服务器。对于一个没有人的服务器,只需要少量计算资源就可以维持运行,而对于一个有一定规模、经常有很多人在线的服务器,你需要大量的计算资源才能维持服务器运转,因为服务器要处理的玩家数据非常多。计算资源这方面东西我会在后面细讲,但是你知道需要有一定的计算资源。如果你要用自己的电脑,你需要保证你自己的电脑 24 小时开机,还需要保证它不会受停电或断网影响,也需要保证它不会影响你的日常生活,比如不能放在你自己卧室导致噪音造成你自己睡眠质量下降。至于云服务器则是虽然配置灵活但是想要一台又快又稳定的服务器也是价格不菲。如果你想要花很少的钱租云服务器,那么你的服务器一定会有经常宕机,甚至服务商跑路的风险。之前我就从别人手里低价接手了一年的一台海外服务器,结果才两个月服务商突然告诉我机房寄了,数据全丢,我去找他们要个说法,结果服务商直接重组,高层换人,根本没处说理去。
你需要一台电脑来运行服务器软件,这台电脑可以是你自己的电脑,也可以是你购买的云服务器。对于一个没有人的服务器,只需要少量计算资源就可以维持运行,而对于一个有一定规模、经常有很多人在线的服务器,你需要大量的计算资源才能维持服务器运转,因为服务器要处理的玩家数据非常多。
计算资源这方面东西会在后面细讲,但是你知道需要有一定的计算资源。如果你要用自己的电脑,你需要保证你自己的电脑 24 小时开机,还需要保证它不会受停电或断网影响,也需要保证它不会影响你的日常生活,比如不能放在你自己卧室导致噪音造成你自己睡眠质量下降。至于云服务器则是虽然配置灵活但是想要一台又快又稳定的服务器也是价格不菲。如果你想要花很少的钱租云服务器,那么你的服务器一定会有经常宕机,甚至服务商跑路的风险。之前我就从别人手里低价接手了一年的一台海外服务器,结果才两个月服务商突然告诉我机房寄了,数据全丢,我去找他们要个说法,结果服务商直接重组,高层换人,根本没处说理去。
### 网络资源
很多服主刚入坑的时候还没有意识到一个严重的问题:由于 IPv4 公网地址稀缺IPv6 又迟迟没有普及,在家用自己的电脑开服务器是很困难的。有的地区可以免费要到公网 IPv4 地址,有的地区要收费,有的地区完全不给。公网 IPv4 可以说是开服必须的配置,如果家里没有公网,那么只能要么转向云服务器要么内网穿透。然而内网穿透也并不是很稳定,主流内网穿透运营商往往走低价路线,虽然价格实惠但是质量可能较差,而自己搭穿透节点往往需要找到符合自己需求的服务器,比云服务器和主流内网穿透的方案都要复杂。解决了 IPv4 的问题之后,你还需要考虑服务器的域名,购买什么样的域名最好,是否要花更多的钱买更好的域名,都是需要考虑的。
很多服主刚入坑的时候还没有意识到一个严重的问题:由于 IPv4 公网地址稀缺IPv6 又迟迟没有普及,在家用自己的电脑开服务器是很困难的。有的地区可以免费要到公网 IPv4 地址,有的地区要收费,有的地区完全不给。
公网 IPv4 可以说是开服必须的配置,如果家里没有公网,那么只能要么转向云服务器要么内网穿透。然而内网穿透也并不是很稳定,主流内网穿透运营商往往走低价路线,虽然价格实惠但是质量可能较差,而自己搭穿透节点往往需要找到符合自己需求的服务器,比云服务器和主流内网穿透的方案都要复杂。
解决了 IPv4 的问题之后,你还需要考虑服务器的域名,购买什么样的域名最好,是否要花更多的钱买更好的域名,都是需要考虑的。
### 耐心

Some files were not shown because too many files have changed in this diff Show More