diff --git a/docs-java/process/maintenance/lang/lang.md b/docs-java/process/maintenance/lang/lang.md index b939f6e14..9a0673d3e 100644 --- a/docs-java/process/maintenance/lang/lang.md +++ b/docs-java/process/maintenance/lang/lang.md @@ -12,7 +12,7 @@ ::: -脚本语言可以分为两大类:**特定语言和通用语言** +脚本语言可以分为两大类:**通用语言** 和 **特定语言** ## 通用语言 diff --git a/docs-java/process/maintenance/lang/skript/advanced-tutorials.md b/docs-java/process/maintenance/lang/skript/advanced-tutorials.md index 0cb6ef9f1..887359a4d 100644 --- a/docs-java/process/maintenance/lang/skript/advanced-tutorials.md +++ b/docs-java/process/maintenance/lang/skript/advanced-tutorials.md @@ -9,16 +9,16 @@ sidebar_position: 3 ## skript-reflect -学完基本的 Skript 语法后,我们会遇到一些 Skript 本身无法实现的功能,`Skript-reflect` 就是为了解决这些问题而诞生的。 +学完基本的 Skript 语法后,我们会遇到一些 Skript 本身无法实现的功能,`skript-reflect` 就是为了解决这些问题而诞生的。 -在基础教程中,我们已经提到过,`Skript-reflect` 允许我们以稍低一些的性能在 Skript 中反射调用 Java API, +在基础教程中,我们已经提到过,`skript-reflect` 允许我们以稍低一些的性能在 Skript 中反射调用 Java API, 它旨在将 **Java** 的功能与 **Skript** 易于使用的开发环境相结合,从而使 **Skript** 脚本编写者能够几乎访问任何 **Java** 类、方法和字段。 ### 为什么使用 skript-reflect? - 我们默认,使用 Skript 的用户通常并不是经验丰富的 **Java** 开发者。 `skript-reflect` 使这些用户能够轻松访问 **Java** API; -- 作为 Skript Addon,使用 `skript-reflect` 的脚本无需像 Java 插件那样进行编译、上传并重启,从而大大降低了开发门槛和调试速度; +- 作为 Skript Addon,使用 `skript-reflect` 的脚本无需像 Java 插件那样进行编译、上传并重启,从而大大降低了开发门槛和调试难度; - 在我们开发服务器时,有时需要访问其他插件的 API 来实现某些功能, `skript-reflect` 使我们能够轻松地做到这一点; ### 如何使用 @@ -31,12 +31,12 @@ sidebar_position: 3 ```skript import: - net.ess3.api.events.TPARequestEvent # 导入java类 + net.ess3.api.events.TPARequestEvent # 导入 Java 类 # 监听事件 on TPARequestEvent: - set {_ess_IUser} to event.getTarget() # 获取IUser对象 - set {_player} to {_ess_IUser}.getBase() # 获取Player对象 + set {_ess_IUser} to event.getTarget() # 获取 IUser 对象 + set {_player} to {_ess_IUser}.getBase() # 获取 Player 对象 # 判断玩家 if {_player} is player("lilingfeng"): set {_command_sender} to event.getRequester().getPlayer() # 获取发起 tpa 请求的玩家 @@ -81,8 +81,8 @@ on TPARequestEvent: 例如,`TPARequestEvent` 事件中没有 `event-player`,因此无法直接使用 `player` 关键字来获取发起 tpa 的玩家。 ```skript - set {_ess_IUser} to event.getTarget() # 获取IUser对象 - set {_player} to {_ess_IUser}.getBase() # 获取Player对象 + set {_ess_IUser} to event.getTarget() # 获取 IUser 对象 + set {_player} to {_ess_IUser}.getBase() # 获取 Player 对象 ``` 这行代码意为调用这个事件里的 `getTarget()` 方法,来获取 tpa 的目标,其返回一个 `IUser`。 @@ -102,15 +102,15 @@ on TPARequestEvent: 在上面这个例子中,我们利用了一些方法 `getTarget()`、`getBase()`、`getRequester()` 和 `getPlayer()`,这些方法都是 Java 类或接口中定义的, -新手会觉得很难理解这些方法是从哪里来的,如何使用的,下面我们就来学习一下如何阅读 **Java Doc**。 +新手会觉得很难理解这些方法是从哪里来的,如何使用的,下面我们就来学习一下如何阅读 **Javadoc**。 假如我们想要使用 **Leaves** 服务端的假人功能,来修改假人在玩家列表中显示的名字,但是 Skript 本身并没有提供相关的事件和方法,我们该如何实现呢? -##### 学会阅读 Java Doc +##### 学会阅读 Javadoc 我们先阅读 [Leaves 的 Javadoc](https://repo.leavesmc.org/javadoc/snapshots/org/leavesmc/leaves/leaves-api/1.20.6-R0.1-SNAPSHOT),寻找相关的事件和方法。 -:::info[如何阅读 Java Doc] +:::info[如何阅读 Javadoc] ![搜索事件](_images/SearchEvent.png) @@ -148,7 +148,7 @@ import: on BotJoin: set {_bot} to event.getBot() # 获取假人 set {_bot_name} to {_bot}.getName() # 储存假人原本的名字 - {_bot}.setPlayerListName("假的%{_bot_name}%") # 修改假人在tab列表里的名字 + {_bot}.setPlayerListName("假的%{_bot_name}%") # 修改假人在 Tab 列表里的名字 ``` `import` 语句导入了 `BotJoinEvent` 类,并将其设为别名 `BotJoin`,以便在 Skript 中使用。 @@ -228,7 +228,7 @@ import [as ] 在 Skript 中使用枚举值时,请使用 `$` 符号来分隔枚举类和枚举值。 -查询 JavaDoc[https://purpurmc.org/javadoc/org/bukkit/event/inventory/ClickType.html] 可以看到 `ClickType` 枚举类中有多个枚举值,如 `DROP`、`LEFT`、`RIGHT` 等。 +查询 [Paper 的 Javadoc](https://jd.papermc.io/paper/1.21.11/org/bukkit/event/inventory/ClickType.html) 可以看到 `ClickType` 枚举类中有多个枚举值,如 `DROP`、`LEFT`、`RIGHT` 等。 举例: @@ -264,9 +264,9 @@ player.giveExpLevels({_levels}) # 给玩家经验等级 -> {_levels} ``` -方法可以用作 **Effects** 、 **Expressions** 和 **Conditions** 。 +方法可以用作 **Effects** 、**Expressions** 和 **Conditions** 。 -如果用作**Conditions**,则只要方法的返回值不是 `false`、`null` 或 `0`,这个 **Conditions** 就会通过。 +如果用作 **Conditions**,则只要方法的返回值不是 `false`、`null` 或 `0`,这个 **Conditions** 就会通过。 ###### 调用非公共方法 @@ -284,7 +284,7 @@ Java 中不同方法有不同的访问修饰符(如 `public`、`private`、`pr ###### 调用 Overload 的方法 -通常, **skript-reflect** 可以从运行时传递的参数中推断出要调用的正确的 Overload 方法。 +通常,**skript-reflect** 可以从运行时传递的参数中推断出要调用的正确的 Overload 方法。 如果需要使用某个方法的某种实现,可以在方法名称的末尾附加一个逗号分隔的列表,并用括号括起来。 @@ -518,4 +518,4 @@ effect put %objects% in %objects%: 这不仅能让你更好地理解 **Skript** 的工作原理,也能让你提升编程能力,并为社区做出贡献。 -在下一章中,我们将介绍一些常用的 **Skript Addon** 以及如何编写自己的 **Skript Addon** [WIP] +在下一章中,我们将介绍一些常用的 **Skript Addon** 以及如何编写自己的 **Skript Addon** [WIP] diff --git a/docs-java/process/maintenance/lang/skript/basic-tutorials.md b/docs-java/process/maintenance/lang/skript/basic-tutorials.md index c53a4ddef..138ac3f83 100644 --- a/docs-java/process/maintenance/lang/skript/basic-tutorials.md +++ b/docs-java/process/maintenance/lang/skript/basic-tutorials.md @@ -228,7 +228,7 @@ on join: # 广播玩家的名字和 IP ``` -表达式通常用于获取一个类型的属性,例如获取玩家的名字、位置,世界的时间,物品的数量等。 +表达式通常用于获取一个类型的属性,例如获取玩家的名字、位置、世界的时间、物品的数量等。 通常来说,用中文描述一个功能时出现 “的” 字时,往往意味着需要使用 Expression 来获取或修改该属性。 @@ -283,7 +283,7 @@ on bed enter: spawn zombie at location of player ``` -但事实上,Skript 会自动判断我们传入的类型,例如 #EffSecSpawn 中需要传入的是 `location` 类型 +但事实上,Skript 会自动判断我们传入的类型,例如 `spawn` 效果需要传入的是 `location` 类型 但 Skript 会自动将 `player` 类型转换为 `location of player` 因此也可直接写成: @@ -384,7 +384,7 @@ on join: 在这个板块中,请利用 [Skript Hub](https://skripthub.net/docs/) 或 [skUnity Docs](https://docs.skunity.com/syntax) 查询 Skript 语法,满足缩进等要求,尝试写一些最基础脚本吧~ -当然仅仅学这些并不够,为了做到能更快更灵活的使用各类语法,在闲暇的时候,把官方 Doc 提供的所有语法的注释都认真的看一遍是快速上手 Skript 的一种好办法。 +当然仅仅学这些并不够,为了做到能更快更灵活的使用各类语法,在闲暇的时候,把官方文档提供的所有语法的注释都认真的看一遍是快速上手 Skript 的一种好办法。 ### 事件 @@ -452,7 +452,7 @@ Skript 使用与 Bukkit 相同的事件优先级机制,触发顺序为 `Lowest 选用不合适的事件可能导致逻辑混乱、性能问题或代码臃肿。因此在编写脚本之前,应充分评估并选取合适的事件。 -##### 练习 1 - 夜间扣血脚本 +#### 练习 1 - 夜间扣血脚本 例如,我们想写一个脚本,检测玩家在 00:00 ~ 06:00 没有在床上睡觉,那么就每秒扣玩家 1 生命值。 diff --git a/docs-java/process/maintenance/lang/skript/skript.md b/docs-java/process/maintenance/lang/skript/skript.md index d7ed62c4a..1a3c9fa16 100644 --- a/docs-java/process/maintenance/lang/skript/skript.md +++ b/docs-java/process/maintenance/lang/skript/skript.md @@ -10,11 +10,11 @@ sidebar_position: 1 本文档大量参考了其他作者的教程,特此致谢。 -引用的内容主要来源于 +引用的内容主要来源于: -TUCAOEVER 在 MCBBS 的教程 +- TUCAOEVER 在 MCBBS 的教程 -法棍 在 CSKB 发布的 [sk 教程](https://kb.corona.studio/zhCN/skript/startup.html) +- 法棍 在 CSKB 发布的 [sk 教程](https://kb.corona.studio/zhCN/skript/startup.html) ::: @@ -30,21 +30,21 @@ Skript 是一个脚本插件,取名来自 "script"。是一个面向 Bukkit 举一个简单的例子,为了实现玩家每次进入服务器就给有 "xxx" 权限的玩家 64 钻石的功能。 -使用 Java 时的代码: +使用 Java 实现的代码: ```java @EventHandler public void onPlayerJoin(PlayerJoinEvent evt) { Player player = evt.getPlayer(); // 玩家加入 - ItemStack itemstack = new ItemStack(Material.DIAMOND, 64); // 定义钻石 if (player.hasPermission("xxx")) { // 权限判断 + ItemStack itemstack = new ItemStack(Material.DIAMOND, 64); // 定义钻石 inventory.addItem(itemstack); // 给予钻石 player.sendMessage("欢迎你加入服务器!你获得了 64 枚钻石!"); } } ``` -使用 Skript 时的代码: +使用 Skript 实现的代码: ```skript on join: @@ -55,14 +55,14 @@ on join: 在大多数情况下,Skript 不会在意大小写、定冠词 "the",只需要符合英语语法和基本的缩进。 -缩进表示代码块的层级关系,类似于 Yaml,当前一行以 `:` 结尾时,下一行需要缩进表示代码块。 +缩进表示代码块的层级关系,类似于 YAML,当前一行以 `:` 结尾时,下一行需要缩进表示代码块。 另外,即使使用了错误的语法,在脚本重载时,报错也基本会提示具体错误类型。 ### 拓展插件多 使用 Skript 时如果遇到 Skript 不包含的语法,可以使用其他拓展插件如 -[Skbee](https://github.com/ShaneBeee/SkBee)、[Skript-reflect](https://github.com/SkriptLang/skript-reflect) 等插件拓展。 +[Skbee](https://github.com/ShaneBeee/SkBee)、[skript-reflect](https://github.com/SkriptLang/skript-reflect) 等插件拓展。 ### 性能略差 @@ -71,14 +71,14 @@ on join: 根据测试,我们发现: 1. 在事件监听、条件判断、Function 跳转、计算等基础功能几乎和 Java 原生持平; -2. 在 skript 中,Loop 循环、wait 等操作由于需要进行上下文变量复制开销会更大一些; +2. 在 Skript 中,Loop 循环、wait 等操作由于需要进行上下文变量复制开销会更大一些; 3. 正常使用 skript-reflect 反射等操作时,开销大概是 Java 原生调用的 1.5 ~ 5 倍。 另外,Skript 的反射使用的是 MethedHandle,性能已经远远优于传统的 Java 反射, 因此,Skript 的性能瓶颈主要在编写者的脚本逻辑上,而不是 Skript 本身。 -## 下载及安装 +## 下载及使用 ### 本体 @@ -87,10 +87,10 @@ on join: 最新版: `https://github.com/SkriptLang/Skript/releases` -1.8.8-1.12.2 2.2dev37c: +2.2-dev37c(适用 1.8.8-1.12.2): `https://github.com/SkriptLang/Skript/releases/download/dev37c/Skript.jar` -1.7.10 2.1.2 +2.1.2(适用 1.7.10): `https://dev.bukkit.org/projects/skript/files/779542/download` ### 拓展插件 @@ -104,11 +104,11 @@ Skript 拓展插件常见的有: 主要用于扩展 Skript 的语法和功能,提供更多的 API 支持,方便脚本编写者实现更多功能。 -另外,由于拓展性能一般会优于 Skript-reflect,因此推荐优先使用拓展插件实现功能。 +另外,由于拓展性能一般会优于 skript-reflect,因此推荐优先使用拓展插件实现功能。 下载链接: -[skunity](https://docs.skunity.com/addons) +[skUnity](https://docs.skunity.com/addons) ### Skript 脚本 @@ -118,7 +118,7 @@ Skript 脚本文件后缀为 `.sk`,将脚本文件放入 `/plugins/Skript/scri [SpigotMC](https://www.spigotmc.org/resources/categories/skript.25/) -[skunity](https://forums.skunity.com/resources/) +[skUnity](https://forums.skunity.com/resources/) ### 片段 @@ -128,7 +128,7 @@ Skript 脚本文件后缀为 `.sk`,将脚本文件放入 `/plugins/Skript/scri 下载链接: -[Skunity 片段合集](https://docs.skunity.com/snippets) +[skUnity 片段合集](https://docs.skunity.com/snippets) [ShaneBeee 片段合集](https://github.com/ShaneBeee/SkriptSnippets/tree/master/snippets) diff --git a/docs-java/process/plugin/game/germengine.md b/docs-java/process/plugin/game/germengine.md index 71a4f3ba6..f51c3da3a 100644 --- a/docs-java/process/plugin/game/germengine.md +++ b/docs-java/process/plugin/game/germengine.md @@ -38,6 +38,6 @@ sidebar_position: 5 萌芽控制台:http://admin.germmc.com -萌芽引擎 JavaDoc:http://javadoc.germmc.com 1.12.2-Bukkit:http://bukkitapi.germmc.com +萌芽引擎 Javadoc:http://javadoc.germmc.com 1.12.2-Bukkit:http://bukkitapi.germmc.com 旧版 Wiki① (已过时):http://wiki.germmc.com 旧版 Wiki② (已过时):http://engine.germmc.com