diff --git a/docs/Commands.md b/docs/Commands.md new file mode 100644 index 0000000..9289c7d --- /dev/null +++ b/docs/Commands.md @@ -0,0 +1,55 @@ +# 指令 {#commands} + +本页包含有关 Slimefun 的指令信息。 +尽管 Slimefun4 中的指令并不多,但了解这些指令仍然很重要。 + +你可以使用前缀 `/slimefun` 或 `/sf`。两者都可以使用。 +为了方便,我们将使用 `/sf`。 + +\<\> = 必填 +[] = 可选 + +## 普通玩家指令 {#commands-for-plugin-users} + +| 指令 | 说明 | 所需权限 | +| ----------- | ------------------- | --------- | +| /sf help | 显示所有指令 | 无 | +| /sf guide | 获得粘液指南书物品 | slimefun.command.guide | +| /sf stats | 显示你当前的状态、称号、已花费的经验值、解锁的进度 | 无 | +| /sf search \<搜索内容\> | 打开指南并显示搜索界面 | slimefun.command.search | +| /sf open_guide | 直接打开粘液指南书 | slimefun.command.open_guide | + +:::warning + +默认情况下,只有以下权限被授予玩家: + +- `slimefun.command.guide` +- `slimefun.command.search` + +::: + +## 管理员指令 {#commands-for-administrators} + +| 指令 | 说明 | 所需权限 | +| ----------- | ------------------- | --------- | +| /sf give \<玩家\> \<物品 ID\> [数量] | 给予指定物品给指定玩家 | slimefun.cheat.items | +| /sf cheat | 打开作弊菜单,可直接获取物品 | slimefun.cheat.items | +| /sf versions | 显示 Slimefun 版本与附属信息 | slimefun.command.versions | +| /sf research \<玩家\> \<研究 / all / reset\> | 为指定玩家解锁指定研究/所有研究/重置所有研究。 | slimefun.cheat.researches | +| /sf stats \<玩家\> | 显示指定玩家的当前状态、称号、已花费的经验值、解锁的进度 | slimefun.stats.others | +| /sf teleporter [玩家] | 显示你的或指定玩家的所有传送点 | slimefun.command.teleporter | +| /sf timings | 显示粘液刻的统计信息 | slimefun.command.timings | +| /sf debug_fish | 获得调试工具 | slimefun.debugging | +| /sf backpack \<玩家\> \ | 给予你用于恢复指定玩家的指定背包的备用背包,应仅用于恢复背包物品 | slimefun.command.backpack | +| /sf charge | 给你手中的物品完全充电 | slimefun.command.charge | +| /sf id | 获得手中粘液物品的 ID | slimefun.command.id | +| /sf cleardata \<世界\> \<\*/block/oil\> | 清除指定世界的 Slimefun 数据(方块/石油) | slimefun.command.clear_data | + +:::warning + +以下指令仅汉化版可用: + +- `/sf id` +- `/sf cleardata` + +::: diff --git a/docs/Developer-Guide-1-Project-Setup.md b/docs/Developer-Guide-1-Project-Setup.md index 439073a..0ba7627 100644 --- a/docs/Developer-Guide-1-Project-Setup.md +++ b/docs/Developer-Guide-1-Project-Setup.md @@ -11,7 +11,7 @@ 3. Apache Maven(IntelliJ IDEA 自带) 4. Git(推荐,用于版本管理) -我们不会详细阐述如何下载并安装这些工具,请自行使用搜索引擎或 ChatGPT 解决。 +我们不会详细阐述如何下载并安装这些工具,请自行使用搜索引擎或询问 AI 解决。 当你安装完这些工具后,进入下一步。 ## 2. 创建一个新的 GitHub 仓库 {#2-create-a-new-github-repository} @@ -67,10 +67,10 @@ Maven 是一个许多 Java 项目使用的依赖管理器。我们的模版项 该名称是为了识别你是一个个人开发者,或者代表一个组织。 该名称必须为全部小写,以下是一些例子: -- `me.ybw0014`(me开头的通常代表个人) +- `me.ybw0014`(me 开头的通常代表个人) - `dev.ybw0014`(如果你拥有网站,使用你网站域名的倒序) - `com.google.example`(如果你属于某个组织,例如 Google,则使用这种格式。不要假冒任何组织,只有当你的项目是以组织名义制作时才使用该格式) -- `io.github.ybw0014`(如果你的仓库在 GitHub 托管并开源,你可以使用该格式) +- `io.github.ybw0014`(如果你的仓库在 GitHub 托管并开源,你选择可以使用该格式) 对于大多数开发者来说,我们建议使用`me.你的名字`来作为包名(记住,全部小写,使用 `_` 来表示空格)。 @@ -192,4 +192,4 @@ api-version: 1.14 ## 5. 锁定你的依赖版本 {#5-locking-your-dependency-versions} -我们模版的 `pom.xml`已经锁定了 Slimefun 依赖项的版本,你可以选择跳过该部分,或阅读[官方文档](https://github.com/Slimefun/Slimefun4/wiki/Developer-Guide-(1-Project-Setup)#5-locking-your-dependency-versions)。 +我们模版的 `pom.xml` 已经锁定了 Slimefun 依赖项的版本,你可以选择跳过该部分,或阅读[官方文档](https://github.com/Slimefun/Slimefun4/wiki/Developer-Guide-(1-Project-Setup)#5-locking-your-dependency-versions)。 diff --git a/docs/Developer-Guide-3-Your-first-Item.md b/docs/Developer-Guide-3-Your-first-Item.md index 738f4dc..40e116d 100644 --- a/docs/Developer-Guide-3-Your-first-Item.md +++ b/docs/Developer-Guide-3-Your-first-Item.md @@ -120,7 +120,7 @@ public void onEnable() { 该类的构造函数拥有 4 个参数: - `itemGroup` 是该物品所属的物品组,在这里我们将使用之前创建的物品组。 -- `itemStack` 是该`SlimefunItem` 所使用的 `SlimefunItemStack`。我们会在稍后说明。 +- `itemStack` 是该 `SlimefunItem` 所使用的 `SlimefunItemStack`。我们会在稍后说明。 - `recipeType` 说明该物品所使用的配方类型。换句话说,就是合成该物品所需的机器。 - `recipe` 是一个长度为 9 的 `ItemStack` 数组,描述了 3x3 的配方。 @@ -132,7 +132,7 @@ public void onEnable() { 在本指南中,我们会使用以下构造函数: `new SlimefunItemStack(id, material, name, lore...);` -首先,我们需要给 `SlimefunItemStack` 提供`id`。 +首先,我们需要给 `SlimefunItemStack` 提供 `id`。 `id` 就是一个大写字母、数字、下划线任意组合而成的一个字符串。例如:`MY_ADDON_ITEM` 物品的 ID 必须是全局唯一的(包括本体与所有附属),所以请选择最适合物品的 ID。 @@ -209,20 +209,20 @@ SlimefunItem sfItem = new SlimefunItem(itemGroup, itemStack, recipeType, recipe) 让我们来回顾一下之前的步骤: -1. 创建了一个物品组`ItemGroup` - a. 使用`CustomItemStack`作为展示物品 -2. 创建了一个粘液物品`SlimefunItem` +1. 创建了一个物品组 `ItemGroup` + a. 使用 `CustomItemStack` 作为展示物品 +2. 创建了一个粘液物品 `SlimefunItem` a. 使用自定义配方 - b. 使用`SlimefunItemStack`来指定物品 ID、材料、显示名与说明 + b. 使用 `SlimefunItemStack` 来指定物品 ID、材料、显示名与说明 以下是目前为止所有的代码(在 `onEnable()` 方法中): ```java NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(Material.DIAMOND, "&4非常炫酷的分类"); -// 创建物品组ItemGroup +// 创建物品组 ItemGroup ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("MY_ADDON_ITEM", Material.EMERALD, "&a炫酷的绿宝石", "", "&7听说很值钱"); // 3x3 的有序合成配方 ItemStack[] recipe = { diff --git a/docs/Developer-Guide-4a-Right-Clicks.md b/docs/Developer-Guide-4a-Right-Clicks.md index 6fa3b14..d5898cc 100644 --- a/docs/Developer-Guide-4a-Right-Clicks.md +++ b/docs/Developer-Guide-4a-Right-Clicks.md @@ -19,9 +19,9 @@ ```java NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(Material.DIAMOND, "&4非常炫酷的分类"); -// 创建物品组ItemGroup +// 创建物品组 ItemGroup ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("MY_ADDON_ITEM", Material.EMERALD, "&a炫酷的绿宝石", "", "&7听说很值钱"); // 3x3 的有序合成配方 ItemStack[] recipe = { @@ -89,7 +89,7 @@ new SlimefunItem(itemGroup, itemStack, recipeType, recipe); ::: -我们只需要使用`super`关键字并传递参数,构造函数现在看起来像这样: +我们只需要使用 `super` 关键字并传递参数,构造函数现在看起来像这样: ```java public class FireCake extends SlimefunItem { @@ -107,9 +107,9 @@ public class FireCake extends SlimefunItem { ```java NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(Material.DIAMOND, "&4非常炫酷的分类"); -// 创建物品组ItemGroup +// 创建物品组 ItemGroup ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("FIRE_CAKE", Material.CAKE, "&4火焰蛋糕", "", "&c小心!"); // 3x3 的有序合成配方 ItemStack[] recipe = { @@ -149,7 +149,7 @@ public class FireCake extends SlimefunItem { } ``` -我们将**覆盖(Override)** 一个来自 `SlimefunItem` 的方法,叫做 `preRegister()`。 +我们将**覆盖(Override)**一个来自 `SlimefunItem` 的方法,叫做 `preRegister()`。 这个方法在物品注册之前被调用,这确保了我们的处理器被正确添加。 注意,覆盖的方法应该有一个 `@Override` 注解,如下所示: diff --git a/docs/Developer-Guide-4b-Radioactive-and-WitherProof.md b/docs/Developer-Guide-4b-Radioactive-and-WitherProof.md index cf61bc3..1eb04ef 100644 --- a/docs/Developer-Guide-4b-Radioactive-and-WitherProof.md +++ b/docs/Developer-Guide-4b-Radioactive-and-WitherProof.md @@ -137,9 +137,9 @@ public class FireCake extends SlimefunItem implements Radioactive { ```java NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(Material.DIAMOND, "&4非常炫酷的分类"); -// 创建物品组ItemGroup +// 创建物品组 ItemGroup ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("MY_ADDON_ITEM", Material.CAKE, "&4火焰蛋糕", "", "&c小心!"); // 3x3 的有序合成配方 ItemStack[] recipe = { @@ -158,15 +158,15 @@ cake.register(this); 有一个静态方法叫做 `LoreBuilder.radioactive(...)`,它接受一个 `Radioactivity` 的常量作为参数。 我们可以使用它来创建一个关于放射性的字符串。这将是与 Slimefun 标准物品使用的相同字符串。 -如果你想更进一步,你也可以使用静态常量`LoreBuilder.HAZMAT_SUIT_REQUIRED`,它会警告玩家需要穿上防护服。 +如果你想更进一步,你也可以使用静态常量 `LoreBuilder.HAZMAT_SUIT_REQUIRED`,它会警告玩家需要穿上防护服。 让我们来做这些吧。 ```java NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(Material.DIAMOND, "&4非常炫酷的分类"); -// 创建物品组ItemGroup +// 创建物品组 ItemGroup ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("FIRE_CAKE", Material.CAKE, "&4火焰蛋糕", "", LoreBuilder.radioactive(Radioactivity.HIGH), LoreBuilder.HAZMAT_SUIT_REQUIRED); // 3x3 的有序合成配方 ItemStack[] recipe = { diff --git a/docs/Developer-Guide-5-Researches.md b/docs/Developer-Guide-5-Researches.md index 1401e5e..d61e93a 100644 --- a/docs/Developer-Guide-5-Researches.md +++ b/docs/Developer-Guide-5-Researches.md @@ -15,9 +15,9 @@ ```java NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(Material.DIAMOND, "&4非常炫酷的分类"); -// 创建物品组ItemGroup +// 创建物品组 ItemGroup ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("FIRE_CAKE", Material.CAKE, "&4火焰蛋糕", "", LoreBuilder.radioactive(Radioactivity.HIGH), LoreBuilder.HAZMAT_SUIT_REQUIRED); // 3x3 的有序合成配方 ItemStack[] recipe = { @@ -142,9 +142,9 @@ research.register(); ```java NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(Material.DIAMOND, "&4非常炫酷的分类"); -// 创建物品组ItemGroup +// 创建物品组 ItemGroup ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("FIRE_CAKE", Material.CAKE, "&4火焰蛋糕", "", LoreBuilder.radioactive(Radioactivity.HIGH), LoreBuilder.HAZMAT_SUIT_REQUIRED); // 3x3 的有序合成配方 ItemStack[] recipe = { diff --git a/docs/Developer-Guide-6-Custom-Heads.md b/docs/Developer-Guide-6-Custom-Heads.md index 0867103..a4dde42 100644 --- a/docs/Developer-Guide-6-Custom-Heads.md +++ b/docs/Developer-Guide-6-Custom-Heads.md @@ -11,9 +11,9 @@ ```java NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(Material.DIAMOND, "&4非常炫酷的分类"); -// 创建物品组ItemGroup +// 创建物品组 ItemGroup ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("MY_ADDON_ITEM", Material.CAKE, "&4火焰蛋糕", "", LoreBuilder.radioactive(Radioactivity.HIGH), LoreBuilder.HAZMAT_SUIT_REQUIRED); // 3x3 的有序合成配方 ItemStack[] recipe = { @@ -162,7 +162,7 @@ NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTk1MmQyYjNmMzUxYTZiMDQ4N2NjNTlkYjMxYmY1ZjI2NDExMzNlNWJhMDAwNmIxODU3NmU5OTZhMDI5M2U1MiJ9fX0="), "&4非常炫酷的分类"); ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("FIRE_CAKE", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTk1MmQyYjNmMzUxYTZiMDQ4N2NjNTlkYjMxYmY1ZjI2NDExMzNlNWJhMDAwNmIxODU3NmU5OTZhMDI5M2U1MiJ9fX0=", "&4火焰蛋糕", "", LoreBuilder.radioactive(Radioactivity.HIGH), LoreBuilder.HAZMAT_SUIT_REQUIRED); // 3x3 的有序合成配方 diff --git a/docs/Developer-Guide-7-GEO-Resources.md b/docs/Developer-Guide-7-GEO-Resources.md index b28ef67..7a07194 100644 --- a/docs/Developer-Guide-7-GEO-Resources.md +++ b/docs/Developer-Guide-7-GEO-Resources.md @@ -14,7 +14,7 @@ NamespacedKey categoryId = new NamespacedKey(this, "cool_category"); CustomItemStack categoryItem = new CustomItemStack(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTk1MmQyYjNmMzUxYTZiMDQ4N2NjNTlkYjMxYmY1ZjI2NDExMzNlNWJhMDAwNmIxODU3NmU5OTZhMDI5M2U1MiJ9fX0="), "&4非常炫酷的分类"); ItemGroup itemGroup = new ItemGroup(categoryId, categoryItem); -// 粘液物品SlimefunItem的物品SlimefunItemStack +// 粘液物品 SlimefunItem 的物品 SlimefunItemStack SlimefunItemStack itemStack = new SlimefunItemStack("FIRE_CAKE", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTk1MmQyYjNmMzUxYTZiMDQ4N2NjNTlkYjMxYmY1ZjI2NDExMzNlNWJhMDAwNmIxODU3NmU5OTZhMDI5M2U1MiJ9fX0=", "&4火焰蛋糕", "", LoreBuilder.radioactive(Radioactivity.HIGH), LoreBuilder.HAZMAT_SUIT_REQUIRED); // 3x3 的有序合成配方 diff --git a/docs/Developer-Guide-Publishing.md b/docs/Developer-Guide-Publishing.md index 0739d53..b955629 100644 --- a/docs/Developer-Guide-Publishing.md +++ b/docs/Developer-Guide-Publishing.md @@ -13,7 +13,7 @@ 如果你的项目没有许可证,那么默认为**保留所有权利**。 即使你想将项目的所有权利都保留给自己,明确地声明这一点也是一个好主意。 -如果你需要帮助选择许可证,请查看[ChooseALicense.com](https://choosealicense.com/)。 +如果你需要帮助选择许可证,请查看 [ChooseALicense.com](https://choosealicense.com/)。 ### 2. 你知道如何编译你的项目 {#2-you-know-how-to-compile-your-project} diff --git a/docs/Developer-Guide.md b/docs/Developer-Guide.md index 50fc885..ba9af66 100644 --- a/docs/Developer-Guide.md +++ b/docs/Developer-Guide.md @@ -35,18 +35,14 @@ sidebar_label: 编写自己的附属插件 2. [创建附属](/Developer-Guide-2-Creating-the-Addon) 3. [你的第一个物品](/Developer-Guide-3-Your-first-Item) 4. 为你的物品添加特性 - -- [右键点击物品或方块时执行操作](/Developer-Guide-4a-Right-Clicks) -- [让物品具有放射性和防凋灵](/Developer-Guide-4b-Radioactive-and-WitherProof) - + - [右键点击物品或方块时执行操作](/Developer-Guide-4a-Right-Clicks) + - [让物品具有放射性和防凋灵](/Developer-Guide-4b-Radioactive-and-WitherProof) 5. [添加自己的研究](/Developer-Guide-5-Researches) 6. [自定义头颅](/Developer-Guide-6-Custom-Heads) 7. [添加自然资源到自然资源开采机](/Developer-Guide-7-GEO-Resources) 8. 创建电力机器 - -- 创建简单的输入/输出机器(即将到来) -- 创建自己的发电机(即将到来) - + - 创建简单的输入/输出机器(即将到来) + - 创建自己的发电机(即将到来) 9. [编译并测试附属](/Developer-Guide-9-Compiling) *. [发布你的附属](/Developer-Guide-Publishing) diff --git a/docs/Permissions.md b/docs/Permissions.md new file mode 100644 index 0000000..ceed2f3 --- /dev/null +++ b/docs/Permissions.md @@ -0,0 +1,31 @@ +# 权限 {#permissions} + +这些是 Slimefun 的权限节点列表。 +大部分用于指令,详见[指令](/Commands)页面。 + +## 指令相关权限 {#permissions-for-commands} + +| 指令 | 说明 | 默认 | +| -------- | -------------------------| --------- | +| slimefun.cheat.items | 允许你使用 `/sf give` 与 `/sf cheat` | OP | +| slimefun.cheat.researches | 允许你使用 `/sf research` | OP | +| slimefun.stats.others | 允许你使用 `/sf stats` 查询他人 | OP | +| slimefun.command.timings | 允许你使用 `/sf timings` | OP | +| slimefun.command.teleporter | 允许你使用 `/sf teleporter` | OP | +| slimefun.command.versions | 允许你使用 `/sf versions` | OP | +| slimefun.command.guide | 允许你使用 `/sf guide` | 所有人 | +| slimefun.command.search | 允许你使用 `/sf search` | 所有人 | +| slimefun.command.open_guide | 允许你使用 `/sf open_guide` | OP | +| slimefun.command.backpack | 允许你使用 `/sf backpack` | OP | +| slimefun.command.charge | 允许你使用 `/sf charge` | OP | +| slimefun.debugging | 允许你使用 `/sf debug_fish` | OP | + +## 方块相关权限 {#permissions-for-blocks} + +| 指令 | 说明 | 默认 | +| -------- | -------------------------| --------- | +| slimefun.inventory.bypass | 允许你打开别人的机器 | OP | +| slimefun.cargo.bypass | 允许你使用其他人的货运节点 | OP | +| slimefun.gps.bypass | 允许你使用其他人的 GPS 设备 | OP | +| slimefun.android.bypass | 允许你使用其他人的机器人 | OP | +| slimefun.android.upload-script | 允许你上传机器人的脚本 | OP | diff --git a/sidebars.ts b/sidebars.ts index dfbc962..54a8ab5 100644 --- a/sidebars.ts +++ b/sidebars.ts @@ -24,6 +24,8 @@ const sidebars: SidebarsConfig = { 'Slimefun-in-a-nutshell', 'Installing-Slimefun', 'Getting-Started', + { type: 'doc', id: 'Permissions', className: 'hidden' }, + { type: 'doc', id: 'Commands', className: 'hidden' }, 'Common-Issues', 'How-to-report-bugs', 'Expanding-the-Wiki',