- 欢迎来到Minecraft插件百科!
- 对百科编辑一脸懵逼?帮助:快速入门带您快速熟悉百科编辑!
- 因近日遭受攻击,百科现已限制编辑,有意编辑请加入插件百科企鹅群:223812289
GuillaumeVDN的插件文档/迁移:修订间差异
Qsefthuopq(留言 | 贡献) 无编辑摘要 |
Qsefthuopq(留言 | 贡献) 无编辑摘要 |
||
第1行: | 第1行: | ||
{{模板:VDNBox}}<br /> | {{模板:VDNBox}}<br /> | ||
== 迁移至GCore v8和QuestCreator v6 == | == 迁移至GCore v8和QuestCreator v6 == | ||
QuestCreator的v6版本需要v8版本的GCore作为前置。我彻底重制了这一版本的插件,新版本的插件可以实现之前所无法实现的功能。 | QuestCreator的v6版本需要v8版本的GCore作为前置。我彻底重制了这一版本的插件,新版本的插件可以实现之前所无法实现的功能。 | ||
第7行: | 第7行: | ||
我很感谢所有在过去几个月里耐心等待修复漏洞和更新插件的人。虽然有些人只因为他们买了我的产品就似乎认为我属于他们,认为我就应该快点更新插件,但很多人都表示支持[和/或]耐心等待重制插件,即便在重制期间我很少更新插件和修复漏洞。虽然这听起来很傻,但Minecraft目前是我生活的重要组成部分,我非常感谢你们的支持。 | 我很感谢所有在过去几个月里耐心等待修复漏洞和更新插件的人。虽然有些人只因为他们买了我的产品就似乎认为我属于他们,认为我就应该快点更新插件,但很多人都表示支持[和/或]耐心等待重制插件,即便在重制期间我很少更新插件和修复漏洞。虽然这听起来很傻,但Minecraft目前是我生活的重要组成部分,我非常感谢你们的支持。 | ||
=== 我的其它插件 === | === 我的其它插件 === | ||
我专注于开发QuestCreator,因为我收到来自这款插件的询问最多。我计划重制我的全部插件,但这需要点时间。我计划在2020-2021年期间完成,只要我有时间,就会去做这件事。 | 我专注于开发QuestCreator,因为我收到来自这款插件的询问最多。我计划重制我的全部插件,但这需要点时间。我计划在2020-2021年期间完成,只要我有时间,就会去做这件事。 | ||
目前只有QuestCreator v6兼容GCore v8。如果你同时使用QuestCreator和我的其它插件,那么你需要同时下载旧版的Gcore 。对此造成的不便我深感抱歉。<br /> | 目前只有QuestCreator v6兼容GCore v8。如果你同时使用QuestCreator和我的其它插件,那么你需要同时下载旧版的Gcore 。对此造成的不便我深感抱歉。<br /> | ||
===警告=== | ===警告=== | ||
这个版本的插件并不稳定,请在投入到正在运行的服务器之前进行充分测试。我会在Discord服务器上发布早期测试版来修复大多数重大漏洞。现在我所公开发布的版本是为了加速调试插件,也为 了不让你们等待太久。 | 这个版本的插件并不稳定,请在投入到正在运行的服务器之前进行充分测试。我会在Discord服务器上发布早期测试版来修复大多数重大漏洞。现在我所公开发布的版本是为了加速调试插件,也为 了不让你们等待太久。 | ||
第17行: | 第17行: | ||
我会分批处理漏洞,频繁发布新的build,可能每3-4天发布一次。我也会在Discord上发布新的build,以避免无谓的等待时间(对已验证用户而言)。<br /> | 我会分批处理漏洞,频繁发布新的build,可能每3-4天发布一次。我也会在Discord上发布新的build,以避免无谓的等待时间(对已验证用户而言)。<br /> | ||
===备份你的服务器=== | ===备份你的服务器=== | ||
为了避免必须手动调整所有的变更配置,GCore v8和QuestCreator v6内置了一个自动转换配置和数据文件的系统。我用一堆不同的文件测试过该系统。但是某些东西可能会出乎意料地被破坏。 | 为了避免必须手动调整所有的变更配置,GCore v8和QuestCreator v6内置了一个自动转换配置和数据文件的系统。我用一堆不同的文件测试过该系统。但是某些东西可能会出乎意料地被破坏。 | ||
第28行: | 第28行: | ||
除了备份之外, 我对于迁移没有更多的特殊说明了。备份并替换旧的.jar文件,插件会自动开始迁移。 | 除了备份之外, 我对于迁移没有更多的特殊说明了。备份并替换旧的.jar文件,插件会自动开始迁移。 | ||
=== 主要变更和新增内容 === | === 主要变更和新增内容 === | ||
插件的大多数的结构仍然没有变化(任务、激活器等),但插件新增了一些特性、对配置进行了标准化,作出了一些微小的变更,还新增了这份全新的插件文档! | 插件的大多数的结构仍然没有变化(任务、激活器等),但插件新增了一些特性、对配置进行了标准化,作出了一些微小的变更,还新增了这份全新的插件文档! | ||
我必须承认我没有列出全部变更的内容,因为插件变更的内容实在是太多了。下面是我想到的重大变更内容列表。如果你对某些变化有任何疑问,我建议你查看这个文档的相关内容。我也只是建议你通读一遍,至少阅读通用和基础内容。 | 我必须承认我没有列出全部变更的内容,因为插件变更的内容实在是太多了。下面是我想到的重大变更内容列表。如果你对某些变化有任何疑问,我建议你查看这个文档的相关内容。我也只是建议你通读一遍,至少阅读通用和基础内容。 | ||
==== 优化和数据 ==== | ==== 优化和数据 ==== | ||
关于这次更新首先映入我脑海的就是优化。这并不是你真正看得见的东西,但代码变得更清晰、精简、一致了。这可以让我更好的维护我的插件。我还对许多库进行了标准化,这意味着像“你修复的bug还是出现了,修了和没修一样”这样的事情将不再发生。 | 关于这次更新首先映入我脑海的就是优化。这并不是你真正看得见的东西,但代码变得更清晰、精简、一致了。这可以让我更好的维护我的插件。我还对许多库进行了标准化,这意味着像“你修复的bug还是出现了,修了和没修一样”这样的事情将不再发生。 | ||
通过适当的异步/回调管理,现在插件对数据板的处理更加一致。我不会在这里阐述这些内容,总之这意味着数据保存更加一致,你有时可能会随机遇到的一些问题(任务重复,数据文件未删除等),不会再发生了。<br /> | 通过适当的异步/回调管理,现在插件对数据板的处理更加一致。我不会在这里阐述这些内容,总之这意味着数据保存更加一致,你有时可能会随机遇到的一些问题(任务重复,数据文件未删除等),不会再发生了。<br /> | ||
==== 配置、物品和变体 ==== | ==== 配置、物品和变体 ==== | ||
我重写了一个YAML解析器,不再使用默认的bukkit解析器。对我而言,最主要的改进是在重写文件时保留注释和配置组织。详见该页面。 | 我重写了一个YAML解析器,不再使用默认的bukkit解析器。对我而言,最主要的改进是在重写文件时保留注释和配置组织。详见该页面。 | ||
第45行: | 第45行: | ||
请在此处阅读有关变体(材料/声音/粒子)的更多详细信息。这些内容没有太大的改变,因为我大部分时间使用相同的旧名称,因为这可以让我更自由和清晰地使用(主要是对我而言,但你也可以自由编辑它,你总是有一个最新的材料/声音/粒子列表)。<br /> | 请在此处阅读有关变体(材料/声音/粒子)的更多详细信息。这些内容没有太大的改变,因为我大部分时间使用相同的旧名称,因为这可以让我更自由和清晰地使用(主要是对我而言,但你也可以自由编辑它,你总是有一个最新的材料/声音/粒子列表)。<br /> | ||
==== 文本 ==== | ==== 文本 ==== | ||
对我而言,文本是这次更新的白璧微瑕,对此我必须道歉:我找不到一种方法来平滑地转换现有的语言文件。由于许多原因(我新增、删除或修改了很多文本,导致一些文本的含义改变,占位符不一致,等等)。 | 对我而言,文本是这次更新的白璧微瑕,对此我必须道歉:我找不到一种方法来平滑地转换现有的语言文件。由于许多原因(我新增、删除或修改了很多文本,导致一些文本的含义改变,占位符不一致,等等)。 | ||
第51行: | 第51行: | ||
好的一面是,现在每个插件的文本都有自己的文件夹,而不是只有一个塞满了各种语言的texts.yml文件。这样翻译就不那么麻烦了。<br /> | 好的一面是,现在每个插件的文本都有自己的文件夹,而不是只有一个塞满了各种语言的texts.yml文件。这样翻译就不那么麻烦了。<br /> | ||
==== 指令 ==== | ==== 指令 ==== | ||
每次大型更新我都会优化我的指令库。我猜你们看到这个主要变更时会很高兴:不再需要<code>-参数:值</code>格式。 | 每次大型更新我都会优化我的指令库。我猜你们看到这个主要变更时会很高兴:不再需要<code>-参数:值</code>格式。 | ||
第66行: | 第66行: | ||
值得一提的是,现在reload|重载指令会彻底重载全部配置和数据。 | 值得一提的是,现在reload|重载指令会彻底重载全部配置和数据。 | ||
==== 文件结构 ==== | ==== 文件结构 ==== | ||
Gcore的文件结构没有多大变化,但QuestCreator就恰恰相反。 | Gcore的文件结构没有多大变化,但QuestCreator就恰恰相反。 | ||
第74行: | 第74行: | ||
<li><p>/plugins/QuestCreator/ :<br /> | <li><p>/plugins/QuestCreator/ :<br /> | ||
** data_v6/:玩家/服务器数据文件(即使你使用MySQL,也会有本地文件)</p> | ** data_v6/:玩家/服务器数据文件(即使你使用MySQL,也会有本地文件)</p> | ||
*(之前全部数据文件都集中存储在GCore里)<br /> | |||
** quest''models/(一如既往)<br /> | ** quest''models/(一如既往)<br /> | ||
** quest''models''functional/(新增)<br /> | ** quest''models''functional/(新增)<br /> | ||
第92行: | 第92行: | ||
** points''categories.yml(之前位于config.yml内)<br /> | ** points''categories.yml(之前位于config.yml内)<br /> | ||
** config.yml(一如既往)</p> | ** config.yml(一如既往)</p> | ||
<p>==== GUI ==== | <p>==== GUI ==== | ||
我也重制并优化了GUI处理。 现在的处理会尽可能地避免导致卡顿,尤其是加载大型多页GUI时或是加载很多玩家皮肤的排列GUI时。</p> | 我也重制并优化了GUI处理。 现在的处理会尽可能地避免导致卡顿,尤其是加载大型多页GUI时或是加载很多玩家皮肤的排列GUI时。</p> | ||
<p>如果你安装了ProtocolLib,则插件会使用客户端数据包。这可以在你安装了很多与GUI交互的插件时,避免Spigot处理额外的事件并优化性能。</p></li></ul> | <p>如果你安装了ProtocolLib,则插件会使用客户端数据包。这可以在你安装了很多与GUI交互的插件时,避免Spigot处理额外的事件并优化性能。</p></li></ul> | ||
同时我也对一些配置进行了优化,让你们有很多的编辑空间,比如页面配置和点击覆盖。详见该页面。<br /> | 同时我也对一些配置进行了优化,让你们有很多的编辑空间,比如页面配置和点击覆盖。详见该页面。<br /> | ||
==== 激活器和注册 ==== | ==== 激活器和注册 ==== | ||
我删掉了一些没用的激活器,比如ENABLED和DISABLED。现在任务不再需要激活器。只要有权限,玩家也能通过GUI或指令开始无激活器的。一些类型的激活器也经过了调整或被删除。 | 我删掉了一些没用的激活器,比如ENABLED和DISABLED。现在任务不再需要激活器。只要有权限,玩家也能通过GUI或指令开始无激活器的。一些类型的激活器也经过了调整或被删除。 | ||
注册文件也不复存在了。你不再需要注册任务模型来开始任务。你可以直接在任务模型文件中配置激活器。任务组内的任务可以在其独立文件内进行配置。<br /> | 注册文件也不复存在了。你不再需要注册任务模型来开始任务。你可以直接在任务模型文件中配置激活器。任务组内的任务可以在其独立文件内进行配置。<br /> | ||
==== 任务目标和条件 ==== | ==== 任务目标和条件 ==== | ||
大多数任务目标和条件都有变化(对名称和设置进行术语标准化或被删除/替换)。我添加了一些有用的东西,比如特殊目标——CONDITIONS''SWITCH|条件切换、LOGIC''SWITCH|逻辑切换和DIVERGE_GUI|GUI分支。详见任务目标列表。<br /> | 大多数任务目标和条件都有变化(对名称和设置进行术语标准化或被删除/替换)。我添加了一些有用的东西,比如特殊目标——CONDITIONS''SWITCH|条件切换、LOGIC''SWITCH|逻辑切换和DIVERGE_GUI|GUI分支。详见任务目标列表。<br /> | ||
=====多目标任务目标(方块/实体/物品)===== | =====多目标任务目标(方块/实体/物品)===== | ||
长久以来用户要求的一个特性就是在同一任务目标内有多个对象。现在大多数方块、实体和物品都可以作为玩家的任务对象。 | |||
对于已存在的方块/物品/实体任务,目前只有一个可用的任务目标,插件会在多目标列表内创建一个子目标。该目标的id为<code>a</code>。比如: | 对于已存在的方块/物品/实体任务,目前只有一个可用的任务目标,插件会在多目标列表内创建一个子目标。该目标的id为<code>a</code>。比如: | ||
<source lang="yaml"># 旧版配置 | <source lang="yaml"># 旧版配置 | ||
my_object: | my_object: | ||
type: PLAYER_BLOCK_BREAK | type: PLAYER_BLOCK_BREAK | ||
block_type: [DIRT,GRASS_BLOCK] | block_type: [DIRT,GRASS_BLOCK] | ||
amount: 50 | amount: 50 | ||
# 新版配置 | # 新版配置 | ||
my_object: | my_object: | ||
type: PLAYER_BLOCKS_BREAK | type: PLAYER_BLOCKS_BREAK | ||
blocks: | blocks: | ||
a: | a: | ||
types: [DIRT,GRASS_BLOCK] | types: [DIRT,GRASS_BLOCK] | ||
goal: 50.0</source> | goal: 50.0</source> | ||
将该id设置为<code>a</code>'''很重要'''。如果你更改了这个id,则进行该任务目标的玩家任务进度会被清空。<br /> | 将该id设置为<code>a</code>'''很重要'''。如果你更改了这个id,则进行该任务目标的玩家任务进度会被清空。<br /> | ||
=====物品目标和关联条件===== | =====物品目标和关联条件===== | ||
一些关联条件有其物品条件和目标,比如PLAYER''QUANTUMRPG''ITEM''PICKUP或MMOITEMS''ITEM。 | 一些关联条件有其物品条件和目标,比如PLAYER''QUANTUMRPG''ITEM''PICKUP或MMOITEMS''ITEM。 | ||
第142行: | 第128行: | ||
对于那些具体的条件和目标,你可能需要再次导入。你需要进行一些测试,如果你遇到了问题,请联系我。<br /> | 对于那些具体的条件和目标,你可能需要再次导入。你需要进行一些测试,如果你遇到了问题,请联系我。<br /> | ||
=====逻辑目标和条件===== | =====逻辑目标和条件===== | ||
之前需要特定数字才能生效的大多数条件已被重构为逻辑字符串,比如“拥有X元”或“有一个变量的特定值”。这需要你拥有逻辑条件的基础知识,详见这里。 | 之前需要特定数字才能生效的大多数条件已被重构为逻辑字符串,比如“拥有X元”或“有一个变量的特定值”。这需要你拥有逻辑条件的基础知识,详见这里。 | ||
第148行: | 第134行: | ||
<source lang="yaml"># 旧版配置 | <source lang="yaml"># 旧版配置 | ||
my_condition: | my_condition: | ||
type: HEROES_SKILL_LEVEL | type: HEROES_SKILL_LEVEL | ||
skill_name: my_skill | skill_name: my_skill | ||
operation: AT_LEAST | operation: AT_LEAST | ||
value: 10 | value: 10 | ||
# 新版配置 | # 新版配置 | ||
my_condition: | my_condition: | ||
type: HEROES_SKILL_LEVEL | type: HEROES_SKILL_LEVEL | ||
skill: my_skill | skill: my_skill | ||
logic: '{skill_level} >= 10'</source> | logic: '{skill_level} >= 10'</source> | ||
这同样作用于目标:之前影响特定值的目标也被重构为数学表达式字符串,比如“修改金钱”或“修改数值”。 | 这同样作用于目标:之前影响特定值的目标也被重构为数学表达式字符串,比如“修改金钱”或“修改数值”。 | ||
比如: | 比如: | ||
<source lang="yaml"># 旧版配置 | <source lang="yaml"># 旧版配置 | ||
my_object: | my_object: | ||
type: SERVER_MONEY_CHANGE | type: SERVER_MONEY_CHANGE | ||
operation: 添加 | operation: 添加 | ||
value: 100.0 | value: 100.0 | ||
# 新版配置 | # 新版配置 | ||
my_object: | my_object: | ||
type: SERVER_LOGIC_MONEY | type: SERVER_LOGIC_MONEY | ||
value_formula: '{value} + 10' # 货币+10</source> | value_formula: '{value} + 10' # 货币+10</source> | ||
=====特例:CONDITIONS条件目标===== | =====特例:CONDITIONS条件目标===== | ||
CONDITIONS目标在新版中被移除了,现根据用法现已被分为了多个其它目标。 | CONDITIONS目标在新版中被移除了,现根据用法现已被分为了多个其它目标。 | ||
第195行: | 第162行: | ||
<source lang="yaml"># 旧版配置 | <source lang="yaml"># 旧版配置 | ||
my_object: | my_object: | ||
type: CONDITIONS | type: CONDITIONS | ||
conditions: | conditions: | ||
# ……此处省略条件设置 | # ……此处省略条件设置 | ||
goto_if_not_valid: QUEST_FAIL | goto_if_not_valid: QUEST_FAIL | ||
goto: OBJECT continue | goto: OBJECT continue | ||
# 新版配置 | # 新版配置 | ||
my_object: | my_object: | ||
type: CONDITIONS_SWITCH | type: CONDITIONS_SWITCH | ||
cases: | cases: | ||
a: | a: | ||
conditions: | conditions: | ||
# ……此处省略条件设置 | # ……此处省略条件设置 | ||
goto: continue | goto: continue | ||
# 此处可有其它案例 | # 此处可有其它案例 | ||
goto: QUEST_FAIL # default goto</source> | goto: QUEST_FAIL # default goto</source> | ||
b) 如果没有失败goto(等待验证条件并继续): | b) 如果没有失败goto(等待验证条件并继续): | ||
第234行: | 第184行: | ||
my_object: | my_object: | ||
type: CONDITIONS | type: CONDITIONS | ||
conditions: | conditions: | ||
# ……此处省略条件设置 | # ……此处省略条件设置 | ||
goto: OBJECT continue | goto: OBJECT continue | ||
第248行: | 第193行: | ||
my_object: | my_object: | ||
type: NONE | type: NONE | ||
progress_conditions: | progress_conditions: | ||
# ……此处省略条件设置 | # ……此处省略条件设置 | ||
goto: continue</source> | goto: continue</source> | ||
====更多设置==== | ====更多设置==== | ||
我添加了许多设置,并对一些元素进行了标准化。对于大多数任务目标,我添加了很酷的东西,比如“items''needed”和“position''stay”。我为任务池增加了更多的控制选项,添加了一个更清晰的actor限制管理系统,以及针对每个元素添加了很多设置,详细信息请查阅相关页面。<br /> | 我添加了许多设置,并对一些元素进行了标准化。对于大多数任务目标,我添加了很酷的东西,比如“items''needed”和“position''stay”。我为任务池增加了更多的控制选项,添加了一个更清晰的actor限制管理系统,以及针对每个元素添加了很多设置,详细信息请查阅相关页面。<br /> | ||
====全局元素==== | ====全局元素==== | ||
为了避免重复配置,我在之前的一堆更新里引入了 "全局变量 "和 "全局条件"的概念。我已经将这个原则扩展到任务目标、分支、GUI物品和时间范围。如果你花了很多时间把相同的配置部分从一个任务复制/粘贴到另一个任务中,那么这个功能很有用。更多信息请查看该页面。<br /> | 为了避免重复配置,我在之前的一堆更新里引入了 "全局变量 "和 "全局条件"的概念。我已经将这个原则扩展到任务目标、分支、GUI物品和时间范围。如果你花了很多时间把相同的配置部分从一个任务复制/粘贴到另一个任务中,那么这个功能很有用。更多信息请查看该页面。<br /> | ||
====还有更多内容!==== | ====还有更多内容!==== | ||
我优化了很多配置,也新增了一些我未列出的新特性,这包括但不限于: | 我优化了很多配置,也新增了一些我未列出的新特性,这包括但不限于: | ||
2020年11月20日 (五) 07:39的版本
GuillaumeVDN的插件文档 | |
---|---|
页面 | |
所有插件都有的常见内容 | |
QuestCreator |
迁移至GCore v8和QuestCreator v6
QuestCreator的v6版本需要v8版本的GCore作为前置。我彻底重制了这一版本的插件,新版本的插件可以实现之前所无法实现的功能。
最重要的是,它可以让插件维护更加高效。而且让我不会在面对几年前写的破代码时痛不欲生。之前版本的代码质量虽然可读性强,但到了要修复bug或更新时,我几乎不知所措。这是因为这些代码是我在几年前刚学编程时写的。现在我的编程技术已炉火纯青,几个月前我就有了重制插件这一想法。正是因此你才会看到这份文档和我重制的插件。
我很感谢所有在过去几个月里耐心等待修复漏洞和更新插件的人。虽然有些人只因为他们买了我的产品就似乎认为我属于他们,认为我就应该快点更新插件,但很多人都表示支持[和/或]耐心等待重制插件,即便在重制期间我很少更新插件和修复漏洞。虽然这听起来很傻,但Minecraft目前是我生活的重要组成部分,我非常感谢你们的支持。
我的其它插件
我专注于开发QuestCreator,因为我收到来自这款插件的询问最多。我计划重制我的全部插件,但这需要点时间。我计划在2020-2021年期间完成,只要我有时间,就会去做这件事。
目前只有QuestCreator v6兼容GCore v8。如果你同时使用QuestCreator和我的其它插件,那么你需要同时下载旧版的Gcore 。对此造成的不便我深感抱歉。
警告
这个版本的插件并不稳定,请在投入到正在运行的服务器之前进行充分测试。我会在Discord服务器上发布早期测试版来修复大多数重大漏洞。现在我所公开发布的版本是为了加速调试插件,也为 了不让你们等待太久。
请在Discord服务器汇报任何你遇到的重大问题,如果不是那么严重的问题,你可以在GitLab上汇报。
我会分批处理漏洞,频繁发布新的build,可能每3-4天发布一次。我也会在Discord上发布新的build,以避免无谓的等待时间(对已验证用户而言)。
备份你的服务器
为了避免必须手动调整所有的变更配置,GCore v8和QuestCreator v6内置了一个自动转换配置和数据文件的系统。我用一堆不同的文件测试过该系统。但是某些东西可能会出乎意料地被破坏。
我不管一些人怎样看待我的插件,但无论如何我是不会特意在我的插件中加入漏洞的 ^_^ 。我会尽我所能地修复它们,但我无法预料所有情况,这也是为何插件会存在漏洞。
因此为了避免数据丢失,我希望你在正常运行中的服务器上迁移之前,先做一个完整的备份。不仅仅是备份我的插件文件,还要备份整个服务器,包括地图、玩家数据状态以及其他插件的数据。虽然QuestCreator从不会直接改变这些数据,但你的任务中有可能存在指令/经济奖励、物品操作等,新的bug也可能会修改这些数据。
我不会对由于你没有备份而导致数据丢失负责。但不幸的是这样的事我听得太多了,所以请备份!
除了备份之外, 我对于迁移没有更多的特殊说明了。备份并替换旧的.jar文件,插件会自动开始迁移。
主要变更和新增内容
插件的大多数的结构仍然没有变化(任务、激活器等),但插件新增了一些特性、对配置进行了标准化,作出了一些微小的变更,还新增了这份全新的插件文档!
我必须承认我没有列出全部变更的内容,因为插件变更的内容实在是太多了。下面是我想到的重大变更内容列表。如果你对某些变化有任何疑问,我建议你查看这个文档的相关内容。我也只是建议你通读一遍,至少阅读通用和基础内容。
优化和数据
关于这次更新首先映入我脑海的就是优化。这并不是你真正看得见的东西,但代码变得更清晰、精简、一致了。这可以让我更好的维护我的插件。我还对许多库进行了标准化,这意味着像“你修复的bug还是出现了,修了和没修一样”这样的事情将不再发生。
通过适当的异步/回调管理,现在插件对数据板的处理更加一致。我不会在这里阐述这些内容,总之这意味着数据保存更加一致,你有时可能会随机遇到的一些问题(任务重复,数据文件未删除等),不会再发生了。
配置、物品和变体
我重写了一个YAML解析器,不再使用默认的bukkit解析器。对我而言,最主要的改进是在重写文件时保留注释和配置组织。详见该页面。
许多配置节在不同的地方不一致。我能想到的主要例子是物品:不同地方的设置并不总是相同的。有时你可以使用一些设置,但有时则无法使用;比如大多数情况下,在物品配置中的“exactmatch”或“removeafter_action”等设置并不是所有地方都能用。现在,一切都是一致的:物品有自己的部分,特定设置位于其配置之外。此处记录了大多数通用配置部分。
现在插件能更好地处理物品,并具有更一致的行为。您可以更清晰地配置大多数特定物品元数据,以及NBT标签(而不是不可读的base64编码文本)。
请在此处阅读有关变体(材料/声音/粒子)的更多详细信息。这些内容没有太大的改变,因为我大部分时间使用相同的旧名称,因为这可以让我更自由和清晰地使用(主要是对我而言,但你也可以自由编辑它,你总是有一个最新的材料/声音/粒子列表)。
文本
对我而言,文本是这次更新的白璧微瑕,对此我必须道歉:我找不到一种方法来平滑地转换现有的语言文件。由于许多原因(我新增、删除或修改了很多文本,导致一些文本的含义改变,占位符不一致,等等)。
对文本进行自动转换只会得到一个混乱、不连贯、不美观的结果,而且也会花费大量时间(何况今年夏天我没有多少时间了)。所以译者必须用自己的语言重新翻译文本。对此我向所有的译者表示抱歉,我知道翻译文本可能真的很无聊,而且需要很长时间。
好的一面是,现在每个插件的文本都有自己的文件夹,而不是只有一个塞满了各种语言的texts.yml文件。这样翻译就不那么麻烦了。
指令
每次大型更新我都会优化我的指令库。我猜你们看到这个主要变更时会很高兴:不再需要-参数:值
格式。
比如之前的指令你需要输入 /qc start -q:farmquest -p:player
,现在你只需输入 /qc start farm
quest player
。
参数无需遵循特定顺序:/qc start farmquest GuillaumeVDN
和/qc start GuillaumeVDN farm
quest
有相同的效果。
我优化了参数检测,现在你无需输入整个参数,你可以使用优化过的自动补全系统。如果插件停止给出参数建议,这就意味着插件找到了唯一匹配的结果。比如输入“Guillaume”你会得到“GuillaumeVDN”的结果,或者在没有其它名字是G开头的玩家在线时只输入“g”你也会得到该结果。
因此这些指令都会有相同的效果:/qc start GuillaumeVDN farm_quest
、/qc start Guillaume farm
、/qc start g farm
、/qc start g fa
。这可以让输入指令不再那么繁琐,但如果输入的内容太短的话可能会得到无关结果。
如果没有指定目标玩家参数,则大多数带有目标玩家参数的指令将以发送者为目标。
值得一提的是,现在reload|重载指令会彻底重载全部配置和数据。
文件结构
Gcore的文件结构没有多大变化,但QuestCreator就恰恰相反。
下面是对新的层次结构的总结。新的特性和变更将在下面进一步解释。
/plugins/QuestCreator/ :
- data_v6/:玩家/服务器数据文件(即使你使用MySQL,也会有本地文件)
- (之前全部数据文件都集中存储在GCore里)
- questmodels/(一如既往)
- questmodelsfunctional/(新增)
- questactivators/(之前所有激活器都位于同一个配置文件内)
- questgroups/(之前所有任务组都位于同一个配置文件内)
- questpools/(之前所有任务池都位于同一个配置文件内)
- queststates/(新增)
- guis/(一如既往)
- globalbranches/(新增)
- globalconditions/(之前所有全局条件都位于同一个配置文件内)
- globalguiitems/(新增)
- globalobjects/(新增)
- globaltimeframes/(新增)
- globalvariables.yml
- servervariables.yml(新增)
- defaultvariables.yml(之前位于config.yml内)
- pointscategories.yml(之前位于config.yml内)
- config.yml(一如既往)
- questmodels/(一如既往)
==== GUI ==== 我也重制并优化了GUI处理。 现在的处理会尽可能地避免导致卡顿,尤其是加载大型多页GUI时或是加载很多玩家皮肤的排列GUI时。
如果你安装了ProtocolLib,则插件会使用客户端数据包。这可以在你安装了很多与GUI交互的插件时,避免Spigot处理额外的事件并优化性能。
同时我也对一些配置进行了优化,让你们有很多的编辑空间,比如页面配置和点击覆盖。详见该页面。
激活器和注册
我删掉了一些没用的激活器,比如ENABLED和DISABLED。现在任务不再需要激活器。只要有权限,玩家也能通过GUI或指令开始无激活器的。一些类型的激活器也经过了调整或被删除。
注册文件也不复存在了。你不再需要注册任务模型来开始任务。你可以直接在任务模型文件中配置激活器。任务组内的任务可以在其独立文件内进行配置。
任务目标和条件
大多数任务目标和条件都有变化(对名称和设置进行术语标准化或被删除/替换)。我添加了一些有用的东西,比如特殊目标——CONDITIONSSWITCH|条件切换、LOGICSWITCH|逻辑切换和DIVERGE_GUI|GUI分支。详见任务目标列表。
多目标任务目标(方块/实体/物品)
长久以来用户要求的一个特性就是在同一任务目标内有多个对象。现在大多数方块、实体和物品都可以作为玩家的任务对象。
对于已存在的方块/物品/实体任务,目前只有一个可用的任务目标,插件会在多目标列表内创建一个子目标。该目标的id为a
。比如:
# 旧版配置
my_object:
type: PLAYER_BLOCK_BREAK
block_type: [DIRT,GRASS_BLOCK]
amount: 50
# 新版配置
my_object:
type: PLAYER_BLOCKS_BREAK
blocks:
a:
types: [DIRT,GRASS_BLOCK]
goal: 50.0
将该id设置为a
很重要。如果你更改了这个id,则进行该任务目标的玩家任务进度会被清空。
物品目标和关联条件
一些关联条件有其物品条件和目标,比如PLAYERQUANTUMRPGITEMPICKUP或MMOITEMSITEM。
由于新的简易NBT配置,这些目标已被移除(除了少部分十分具体的条件)。维护这些条件对我而言太痛苦了。更加一致的条件和目标更利于我进行维护。
对于那些具体的条件和目标,你可能需要再次导入。你需要进行一些测试,如果你遇到了问题,请联系我。
逻辑目标和条件
之前需要特定数字才能生效的大多数条件已被重构为逻辑字符串,比如“拥有X元”或“有一个变量的特定值”。这需要你拥有逻辑条件的基础知识,详见这里。
比如:
# 旧版配置
my_condition:
type: HEROES_SKILL_LEVEL
skill_name: my_skill
operation: AT_LEAST
value: 10
# 新版配置
my_condition:
type: HEROES_SKILL_LEVEL
skill: my_skill
logic: '{skill_level} >= 10'
这同样作用于目标:之前影响特定值的目标也被重构为数学表达式字符串,比如“修改金钱”或“修改数值”。
比如:
# 旧版配置
my_object:
type: SERVER_MONEY_CHANGE
operation: 添加
value: 100.0
# 新版配置
my_object:
type: SERVER_LOGIC_MONEY
value_formula: '{value} + 10' # 货币+10
特例:CONDITIONS条件目标
CONDITIONS目标在新版中被移除了,现根据用法现已被分为了多个其它目标。
a) 如果拥有失败goto(用于连接两个目标):
# 旧版配置
my_object:
type: CONDITIONS
conditions:
# ……此处省略条件设置
goto_if_not_valid: QUEST_FAIL
goto: OBJECT continue
# 新版配置
my_object:
type: CONDITIONS_SWITCH
cases:
a:
conditions:
# ……此处省略条件设置
goto: continue
# 此处可有其它案例
goto: QUEST_FAIL # default goto
b) 如果没有失败goto(等待验证条件并继续):
# 旧版配置
my_object:
type: CONDITIONS
conditions:
# ……此处省略条件设置
goto: OBJECT continue
# 新版配置
my_object:
type: NONE
progress_conditions:
# ……此处省略条件设置
goto: continue
更多设置
我添加了许多设置,并对一些元素进行了标准化。对于大多数任务目标,我添加了很酷的东西,比如“itemsneeded”和“positionstay”。我为任务池增加了更多的控制选项,添加了一个更清晰的actor限制管理系统,以及针对每个元素添加了很多设置,详细信息请查阅相关页面。
全局元素
为了避免重复配置,我在之前的一堆更新里引入了 "全局变量 "和 "全局条件"的概念。我已经将这个原则扩展到任务目标、分支、GUI物品和时间范围。如果你花了很多时间把相同的配置部分从一个任务复制/粘贴到另一个任务中,那么这个功能很有用。更多信息请查看该页面。
还有更多内容!
我优化了很多配置,也新增了一些我未列出的新特性,这包括但不限于:
- #627 Show diffrent text if condition is not met in DIVERGE (提出者:zemoz)
- #625 Allow players to have multiple quests open via permissions (提出者:viveleroi)
- #621 建议:Multiple quests in the scoreboard (提出者:MrMint)
- #226 建议:coop quest (提出者:timmy0707)
- #252 建议:Global Server Quest (提出者:TheOnlyTermin)
- #299 新目标建议 (提出者:timmy0707)
- #307 计分板建议 (提出者:timmy0707)
- #320 建议添加条件 (提出者:timmy0707)
- #346 待办事项:对PLAYER_ITEM目标实现多物品对象 (提出者:GuillaumeVDN)
- #350 [建议 QOL Update for Console Neatness/Readability.] (提出者:NolanMC)
- #365 建议 (提出者:joker19102002)
- #369 建议:MythicMobs ITEMS (提出者:Mortesaison)
- #453 建议将游戏内编辑器颜色代码改为小写 (提出者:timmy0707)
- #448 提议:调整 actionbar/bossbar/计分板 优先度 (提出者:Ssomarrr)
- #474 New Condition Operation: “BETWEEN” (提出者:NolanMC)
- #514 支持option “removeafteraction” for PLAYERCONTAINERMANIPULATE (提出者:kelvinjunilson)
- #522 兼容‘Items添加erV1’ (提出者:FlameCat)
- #550 建议 - OR Condition with multiple options (提出者:AshenGaming)
- #551 建议 PLAYERMOBINTERACT (提出者:timmy0707)
- #554 Global variable (提出者:pristatauminecraft84)
- #587 建议:Breed Objective (Ex. breed 5 horses) (提出者:MyTale)
- #589 建议:Tier name option for QuantumRPG objects. (提出者:MyTale)
- #590 建议:Brewing Objective (提出者:MyTale)
- #609 A 建议:PLAYERMMOITEMSITEM_PICKUP (提出者:BastaMasta)
- #613 建议:Server Variables (提出者:Leopled)
- #615 建议:Variables to be given a primitive type modifier (提出者:Leopled)
- #616 建议:添加 - PLAYERMOBBREED (提出者:nikita.sineiko)
- #617 建议:添加 - ELYTRAFLIGHTDISTANCE (提出者:nikita.sineiko)
- #630 GPS Spam when QC quest is active (提出者:denisamania)
- #165 GPS Feature (提出者:phamductrungbmt)
- #207 建议:Search Type (提出者:timmy0707)
- #290 建议 GPS (提出者:timmy0707)
- #239 建议 condition slot (提出者:Yuky-Mystic)
- #241 DIVERGE object GUI option (提出者:junpark8903)
- #249 建议 - PLAYERMOBFEED object (提出者:bccyv)
- #272 delayrepeatmessagegotonot_reached: (提出者:Lordinouille)
- #361 建议 pre quest dialog (提出者:timmy0707)
- #351 建议 missing Config Option to stop Quests from auto sorting (提出者:quorn23)
- #338 Mission zone (提出者:Lordinouille)
- #296 Quest Differ with Permission in Same Menu (提出者:MacTonight8)
- #325 建议 object diverge amount limit (提出者:timmy0707)
- #348 建议 SERVERITEMEDIT (提出者:timmy0707)
- #273 create an hologram object above cinematics client side npc (提出者:pigmen26gamesYT)
- #370 建议 item particle (提出者:timmy0707)
- #396 Hologram aesthetics and function (提出者:techdude404gaming)
- #374 custom message checkpoint (提出者:Lordinouille)
- #230 GangPlus Support (提出者:AlessioTW)
- #378 建议 QuestPoint Placeholder (提出者:timmy0707)
- #362 SuperiorSkyblock integration (提出者:Faceless0102)
- #381 Shopkeeper Plugin Support (提出者:AkiraKokiri)
- #382 Object PLAYERCITIZENSNPCDELIVERITEMS (提出者:Hellgato)
- #397 [建议 - gvariables & variables 设置] (提出者:Hellgato)
- #399 建议 different progression text for delegates when completed (提出者:timmy0707)
- #634 DAYOFMONTH condition (提出者:emohobo)
- #434 [建议 Object area] (提出者:Lordinouille)
- #444 [建议 添加 namecontains, lorecontains etc] (提出者:Lordinouille)
- #398 关联MMOCore (提出者:jajamic)
- #411 MMOCore 支持建议 (提出者:ItsSniper)
- #422 [建议 关联MMOCore 经验/队伍] (提出者:gitoez)
- #439 QuestCreator会支持MMOCore吗? (提出者:easonchu)
- #604 建议:MMOCore’s variables condition (提出者:harunalisa10)
- #404 支持MCMMO Overhaul (提出者:NolanMC)
- #624 支持mcMMO Overhauled (提出者:viveleroi)
- #445 建议 object setting invisible (提出者:timmy0707)
- #447 新目标建议 (提出者:timmy0707)
- #453 建议 ingame editor color code tolowercase (提出者:timmy0707)
- #464 Reception data ( suggested feature) (提出者:hammad_alhassan)
- #467 executionchance and progresschance fail goto’s (提出者:timmy0707)
- #469 SuperiorSkyblock2 Hook for QuestCreator (提出者:studiotadikl)
- #476 建议s for location (提出者:HuJunwei23333)
- #462 TokenEnchant Feature (提出者:miwasakytb)
- #487 建议 npc id auto detect (提出者:timmy0707)
- #493 Possibility to delete old Userdata (提出者:maxklug1999)
- #510 NPC conversation 建议s (DIVERGE OBJECT) (提出者:gingycraft)
- #535 建议 - hiding completed objectives from the scoreboard in a GROUP object (提出者:Silvark)
- #541 Quantum rpg: level system integration (提出者:koviazin.pro)
- #559 New variable: runningconcurrentquest_count (提出者:kelvinjunilson)
- #586 建议:Option to remove vanilla lore on GUI items. (提出者:MyTale)
- #623 Quetes entre membres d’ile (提出者:WarnDangerous)
- #501 SERVERACTIONLIST Argument 添加ition Request (提出者:techdude404gaming)
- #521 Ajouter une commande pour ouvrir le journal directement (提出者:titidelaff)
- #620 [建议/BUGFIX Please FIX quest MOVEMENT & ORDER] (提出者:nikita.sineiko)
- #618 建议:添加 - PLAYERSWIMDISTANCE (提出者:nikita.sineiko)
- #581 支持执行Denizen脚本 (提出者:Renin)
- #591 DungeonXL条件:location (提出者:koviazin.pro)
- #592 建议:添加 option to detect mobs spawned by spawners (提出者:deadfish12)
- #597 Condition INVENTORYFREEFOR (提出者:Lordinouille)
- #600 建议:progress_sound (提出者:juankaplay)
- #635 Server stall on boot, appears related to player head web requests (提出者:viveleroi)
- #629 NuVotifier关联失效 (提出者:viveleroi)
- #632 HONEY_LEVEL block state (提出者:GuillaumeVDN)
- #614 建议:可通过指令退出多人任务 (提出者:Leopled)
- #598 建议:更好地支持酿造药水和修复装备 (提出者:MyTale)
- #638 建议 configurable region activator (提出者:timmy0707)
- #637 给GUI添加音效 (提出者:Tactical_Spatula)
- #633 QC recode : SERVER_ACTION to play a particle script at a certain position (提出者:GuillaumeVDN)
- #599 建议:在OBJECTS内添加粒子选项 (提出者:MrFeikon)
- #619 SWEET_BERRIES无法作为GUI物品 (提出者:johnsoncui02)
- #629 NuVotifier关联失效 (提出者:viveleroi)
- #561 SOME or maybe MANY RE-CODING 建议 (提出者:timmy0707)
- #610 建议:添加 HEX COLOR 支持- 1.16 (提出者:MrFeikon)
- #507 添加 CMI Bossbar support (提出者:AshenGaming)
- #335 支持群组服 (提出者:Cerexus)
- #359 建议关联Boss (提出者:jimmyyeung06)
- #438 Quest Menu empty until /quest progress (提出者:CM_lectric)
- #315 “PLAYERCHATVARIABLE” Problem (提出者:MrMint)
- #206 items: amout: 1 problem and shitty way of being coded <3 (提出者:Lordinouille)
- #570 BUG quest queue (提出者:timmy0707)
- #495 cancelevent for object PLAYERCHAT (提出者:PizzaMC)
- #389 BUG ScoreBoard (提出者:timmy0707)
- #419 [建议 Option to specify item/mob type in the object “forbidden” setting] (提出者:deadfish12)
- #456 Quest Progress Placeholders not formatted with Commas (提出者:CM_lectric)
- #449 BUG scoreboard text (提出者:timmy0707)
- #483 {objectivegoal} value distorting at 10 billion (提出者:CMlectric)
- #485 排序玩家导致极度卡顿 (提出者:Dusan7991)