Fast Crafting
概览
Fast Crafting 用一个菜单取代原版工作台,该菜单会列出玩家能制作的配方,并可一键合成。配方读取自服务器的配方目录,玩家能合成什么则根据其自身物品栏在服务器上重新计算。玩家可以选择数量,或按住 Shift 点击来合成最大数量,所需材料会从其物品栏中扣除。
集成菜单使用一个 54 格的单一物品栏,带有两个标签页。Crafting 有一行当前可用配方的快速合成行,以及一个手动 3x3 网格。Recipes 是按 RPG Core 职业(战斗、采矿、农业、制作等)分类的目录,带有可用数和总数计数器、筛选、排序和搜索对话框。在目录中点击某个配方会立即合成它;配方绝不会替你放入网格。
该扩展运行于 TypeWriter 的 BTC 构建版本(BTC Core,Paper/Folia),此处的文档仅供参考。它从 RPG Core 读取配方元数据,并对配方应用其等级锁定。
功能
- 一键合成 — 点击配方合成所选数量(默认 1、4、8、16、32、64,或自动),Shift 点击合成最大数量。
- 快速合成行 — 显示可用的配方,仅对持有某个权限的玩家显示。
- 职业目录 — 九个分类,带有
available / total计数器,取自每个配方的 RPG Core 职业。 - 搜索、排序与筛选 — 基于 Paper 对话框的搜索,可按名称、标识符和职业搜索,支持按字母顺序或按可用性排序,以及全部、可用或缺失的筛选。
- 手动 3x3 网格 — 一个带有输出槽位的可选网格,玩家手动放入材料;菜单关闭时,剩余的物品会返还给他们。
- 工作台替换 — 右键点击工作台时可以打开此菜单。
- 配方来源 — 原版配方、单个命名空间(例如
custom),或 MMOItems 工作站配方。 - 等级锁定 — 应用 RPG Core 的配方等级门槛,其他插件可以通过事件拒绝一次合成。
- 安全的结果 — 溢出的物品会掉落在玩家脚下,或阻止合成,可选的冷却用于限制刷屏。
安装
- 安装 RPG Core(
RPGBundle扩展)、TypeWriter 的 Basic 扩展和 GUI 扩展(GuiAndDialogs)。没有它们,Fast Crafting 将无法加载。 - 可选:如果你想使用 MMOItems 的工作站配方(
useMMOItemsRecipes),请安装 MMOItems。 - 将 Fast Crafting 的 JAR 放入
plugins/Typewriter/extensions/并重启服务器。 - 将权限
fastcrafting.quickcraft授予可以看到快速合成行的玩家。
快速上手
通过命令打开集成菜单:
- 在 TypeWriter 网页面板中,打开一个**清单(manifest)**页面,添加一个 Fast Crafting 动作。
- 设置
inventoryTitle,将inventoryRows保持为6,并开启integratedMenu.enabled。 - 让
categoryIds保留九个 RPG Core 职业,或只保留你使用的那些。如果你想要手动 3x3 网格,请开启classicCrafting.enabled。 - 如果你只想使用自己的配方,请将
recipeNamespace设为你的配方的命名空间,例如custom。 - 添加一个自定义命令条目(例如
fastcrafting),并将 Fast Crafting 动作放入其triggers。NPC、物品和对话也可以触发该动作。 - 若要替换原版工作台,请开启
replaceCraftingTable,并在需要时设置replaceCraftingTablePermission。 - 发布,给自己一些材料,然后运行该命令。
当 integratedMenu.enabled 关闭(默认)时,该动作会打开由 layoutPool、recipeGrid 和 fastcraft_button: 标记构建的旧版布局。请开启它以使用此处所述的单一物品栏菜单。集成菜单会忽略旧版的打开和关闭按钮以及 SELECTION_INFO 按钮。
在旧版布局中,标记有 OPEN_GRID、REFRESH、PAGE_PREV、PAGE_NEXT、CRAFT_AMOUNT、SELECTION_INFO 和 CLOSE。左键点击配方会制作它,Shift + 左键制作最大数量,右键选中它。SELECTION_INFO 显示通过右键选中的(或最后制作的)配方,文本来自 selectionInfo 字段:名称、产出数量、可制作次数,以及每种材料一行。键名请参见 Fast Crafting。
工作原理
目录会针对每个条目配置,根据 Bukkit 配方构建一次:仅包含合成配方,并按 recipeNamespace 和 disableVanillaRecipes 过滤。每个配方的职业来自 RPG Core,没有职业的配方会归入 crafting。可合成的内容会根据玩家的物品栏重新计算,在他们移动物品、拾取、丢弃或消耗物品时刷新。
当 RPG Core 有替代品时,属于原版物品的结果会被转换为其对应的 BTC 物品。在没有 recipeNamespace 的情况下,结果为 CraftEngine 或 BTC 物品的配方会从目录中隐藏,因此请设置 recipeNamespace(例如 custom)以列出你的自定义配方。
菜单
集成菜单有六行:
| 行 | Crafting 标签页 | Recipes 标签页 |
|---|---|---|
| 1 | Crafting 和 Recipes 标签页。 | Crafting 和 Recipes 标签页。 |
| 2 | 快速合成配方(最多 quickRecipesPerPage 个,没有快速合成权限时隐藏),支持翻页。 | 职业分类及其 available / total 计数器。 |
| 3 到 5 | 手动 3x3 网格、输出槽位和数量按钮。 | 所选分类的配方(recipesPerPage,默认 27)。 |
| 6 | 菜单控制。 | 搜索、排序、筛选和翻页控制。 |
左键点击配方会合成所选数量。当 allowShiftCraftAll 开启时,Shift 点击会合成最大数量。数量按钮会在 craftAmountButton.values 之间循环,当 includeAuto 开启时还有一个自动选项。搜索对话框会在配方名称、标识符和职业中查找。默认排序为 defaultSort(AVAILABLE_FIRST 或 ALPHABETICAL),默认筛选为 defaultFilter(ALL、AVAILABLE 或 MISSING)。菜单文本为法语。
手动网格通过 classicCrafting 放置。玩家手动向其中放入物品,并在点击输出槽位时合成结果,Shift 点击可合成最大数量。留在网格中的物品会在菜单关闭时返还到其物品栏。
配置
一切都在 Fast Crafting 条目中设置。与布局无关的主要设置:
| 设置 | 用途 |
|---|---|
fastCraftPermission | 打开菜单和合成所需的权限(留空表示所有人)。 |
recipeNamespace | 只列出此命名空间的配方。 |
disableVanillaRecipes | 隐藏 minecraft: 配方。 |
useMMOItemsRecipes | 在 MMOItems 已启用时添加 MMOItems 工作站配方,并隐藏原版配方。 |
dropWhenInventoryFull | 当物品栏已满时,将结果掉落在玩家脚下。关闭则表示当结果放不下时拒绝合成。 |
craftCooldownTicks | 两次合成之间的冷却,单位为 tick(0 表示无冷却)。 |
autoRefreshTicks | 每 N 个 tick 刷新已打开的菜单(0 表示不刷新)。 |
replaceCraftingTable | 打开此菜单而不是原版工作台。潜行的玩家保留原版工作台。 |
权限
| 权限 | 授予 |
|---|---|
fastcrafting.quickcraft | 显示集成菜单的快速合成行。该名称是 integratedMenu.quickCraftPermission 的默认值;将其留空即可向所有人显示该行。 |
fastCraftPermission 的值 | 由你选择的用于打开菜单和合成的权限。 |
replaceCraftingTablePermission 的值 | 由你选择的、在使用工作台时获得该菜单的权限。 |
该扩展没有自己的命令,也没有占位符。菜单点击使用一个内部的 fastcraft: 通道,它与玩家已打开的菜单绑定,无法手动输入。
条目
1 个条目,由扩展源码生成。
动作1
- Fast CraftingFast Crafting
故障排查
菜单是旧版布局。 integratedMenu.enabled 是关闭的,这是默认值。请开启它以获得标签页、目录和快速合成行。
目录是空的。 请检查 recipeNamespace:只会列出该命名空间的配方。没有命名空间时,结果为 CraftEngine 或 BTC 物品的配方会被隐藏。使用 disableVanillaRecipes 或 useMMOItemsRecipes 时,minecraft: 配方会被移除。
快速合成行缺失。 玩家缺少快速合成权限(默认为 fastcrafting.quickcraft)。清空该字段即可向所有人显示该行。
某个配方变灰或拒绝合成。 玩家可能缺少材料、低于该配方的 RPG Core 等级(消息会显示在动作栏上),或者其他插件可能取消了合成。在冷却期间,以及在结果放不下且 dropWhenInventoryFull 关闭时,合成同样会被拒绝。
某个配方位于错误的分类。 分类来自在 RPG Core 中为该配方键注册的职业。没有职业的配方会归入 crafting。categoryIds 中 RPG Core 未定义的分类仍会显示,使用通用的名称和图标。
原版工作台没有被替换。 replaceCraftingTable 必须开启,如果设置了 replaceCraftingTablePermission,玩家必须持有它,并且潜行的玩家会保留原版工作台。会使用第一个开启了该选项的条目。
搜索按钮没有任何作用。 integratedMenu.searchEnabled 必须开启。搜索会打开 Paper 对话框,因此需要支持 Paper 对话框的服务器。