ItemsAdder
概述
ItemsAdder 让你通过资源包向服务器添加自定义方块、家具、物品、作物、HUD 和实体。本扩展让所有这些内容都能在 TypeWriter 中使用。任务可以要求玩家破坏一种自定义矿石或放置一盏自定义灯,对话可以响应玩家坐在你的家具上,条件(criteria)可以检查玩家是否持有你的自定义剑。
一切都使用 ItemsAdder 的命名空间 id(namespace:id,例如 my_pack:ruby_ore)。这里不会创建任何内容:你仍然需要在 ItemsAdder 中定义方块、家具和物品,然后在 TypeWriter 条目中使用它们的 id。
功能
- 方块和家具事件 — 当自定义方块或家具被破坏、放置或交互时触发。
- 放置前事件 — 在家具即将生成之前触发的触发器。
- 自定义实体死亡 — 当玩家击杀 ItemsAdder 自定义实体时触发。
- 计数目标 — 将破坏或放置自定义方块和家具作为任务目标。
- 物品栏工具 — 给予或移除 ItemsAdder 物品,并响应拾取、丢弃或使用它们。
- 物品和世界 fact — 手持物品、物品数量、剩余使用次数和耐久度、注视或站立的方块、注视的家具。
- 作物和 HUD fact — 作物的生长阶段、作物是否成熟,以及某个具名 HUD 是否可见。
- 变量 — 手持物品、方块和家具的 id 与属性、字体图像字形以及注册表列表,可直接用于任何文本。
- 声音条目 — 在 TypeWriter 要求声音的任何地方使用 ItemsAdder 的声音 id。
安装
- 安装 ItemsAdder,并让它生成其资源包。没有它,本扩展无法加载。
- 确保已安装 TypeWriter 的 Quest 和 Basic 扩展。
- 从商店下载该扩展(见上方面板中的按钮),并将 JAR 放入
plugins/Typewriter/extensions/。 - 重启服务器。
快速上手
本教程制作一个要求玩家破坏三个自定义矿石方块的任务。
- 在网页面板中,使用 Quest 扩展创建一个任务,并创建一个用于保存进度的 fact(永久 fact 是不错的选择)。
- 在一个 manifest 页面上,添加一个 Break Block 目标。
- 将
quest设为你的任务,fact设为进度 fact。将item设为方块 id,例如my_pack:ruby_ore,amount设为3。让item留空则统计任意自定义方块。 - 将
display设为任务追踪器中显示的文字,例如Mine ruby ore。进度(1/3)会自动添加。 - 可选:将
onComplete链接到发放奖励的 sequence,例如使用 Give Item,并将itemId设为my_pack:ruby_pendant。 - Publish(发布),开始任务,然后破坏该方块。
如果只想响应一次而不是计数,请使用事件:在一个 sequence 页面上添加 On Custom Block Break 条目,填写 blockId,并将其 triggers 链接到要运行的条目。
使用 Registry IDs 变量,或在游戏中使用 ItemsAdder 的命令,列出 ItemsAdder 已加载的内容,并复制精确的命名空间 id。
工作原理
事件会携带关于所发生之事的数据。被触发的条目可以读取方块或家具的 id 及其位置、所用的点击方式(对于方块交互)以及手中的物品。
目标对每位玩家的每个位置只计数一次。在同一位置再次破坏和放置同一方块不会增加计数。只有当玩家激活了所链接的任务时才会计数。被取消的操作(例如在受保护的区域中)不会计数,也不会触发事件。
配置
任务追踪器中的目标行由两个 TypeWriter 片段(snippet)构成,你可以在 TypeWriter 的 snippets 文件中修改它们:
| 片段 | 默认值 |
|---|---|
advancedQuest.display | <display> <dark_gray>(<gray><current><dark_gray>/<gray><required><dark_gray>) |
advancedQuest.completed | <green>✔</green> <st><display></st> <dark_gray>(<gray><current><dark_gray>/<gray><required><dark_gray>) |
条目
35 个条目,由扩展源码生成。
动作2
- Itemsadder Give Item ActionGive an ItemsAdder item to the player
- Itemsadder Remove Item ActionRemove an ItemsAdder item from the player
事件11
- Itemsadder on Item Consume EventTriggers when the player consumes an ItemsAdder item
- Itemsadder on Item Drop EventTriggers when the player drops an ItemsAdder item
- Itemsadder on Item Pickup EventTriggers when the player picks up an ItemsAdder item
- On Custom Entity Death EventTriggers when a custom entity is killed by the player
- On Customblock Break EventTriggers when a custom block is broken
- On Customblock Interact EventTriggers when a custom block is interacted with
- On Customblock Place EventTriggers when a custom block is placed
- On Furniture Break EventTriggers when a furniture is broken
- On Furniture Interact EventTriggers when a furniture is interacted with
- On Furniture Place EventTriggers when a furniture is placed
- On Furniture Pre Place EventTriggers just before a furniture is placed
目标4
- Break Customblock ObjectiveAn objective to break blocks
- Break Furniture ObjectiveAn objective to break furniture
- Place Customblock ObjectiveAn objective to place blocks
- Place Furniture ObjectiveAn objective to place furniture
事实10
- Itemsadder Crop Age FactGrowth stage of the ItemsAdder crop the player is looking at
- Itemsadder Crop Fully Grown FactWhether the ItemsAdder crop the player is looking at is ripe
- Itemsadder Holding Item FactWhether the player is holding an ItemsAdder item
- Itemsadder HUD Visible FactWhether a named ItemsAdder HUD is visible to the player
- Itemsadder Item Count FactHow many of an ItemsAdder item the player carries
- Itemsadder Item Durability FactCustom durability left on the held ItemsAdder item
- Itemsadder Item Usages FactUses left on the held ItemsAdder item
- Itemsadder Looking at Block FactWhether the player is looking at an ItemsAdder block
- Itemsadder Looking at Furniture FactWhether the player is looking at ItemsAdder furniture
- Itemsadder Standing on Block FactWhether the player is standing on an ItemsAdder block
变量7
- Itemsadder Font Image VariableThe characters that render an ItemsAdder font image
- Itemsadder Item in Hand ID VariableThe ItemsAdder ID of the item the player holds
- Itemsadder Item Property VariableA property of the ItemsAdder item the player holds
- Itemsadder Looking at Block ID VariableThe ItemsAdder ID of the block the player is looking at
- Itemsadder Looking at Furniture ID VariableThe ItemsAdder ID of the furniture the player is looking at
- Itemsadder Registry Ids VariableThe list of IDs ItemsAdder has loaded
- Itemsadder Standing on Block ID VariableThe ItemsAdder ID of the block the player stands on
声音1
- Itemsadder SoundItemsAdder Sound
故障排查
扩展没有出现在面板中。 没有安装 ItemsAdder,或它没有启用。每个条目都会调用 ItemsAdder 的 API,因此没有该插件时扩展会拒绝加载。
事件始终不触发。 请检查 id:必须是完整的 namespace:id,而不仅仅是 id。空的 id 会匹配任何内容。如果你填写了 location,则只有该精确的方块位置才会匹配。被其他插件取消的事件(例如保护插件)会被忽略。
目标没有进展。 玩家必须激活了所链接的任务,并且目标上必须设置了 fact。同一个方块位置对每位玩家只计数一次。
某个 fact 始终返回 0。 手持物品或方块不是 ItemsAdder 的。注视方块的 fact 只检查 range 格(默认 5)以内的第一个方块。当物品没有使用次数或自定义耐久度时,使用次数和耐久度的 fact 返回 0。
Registry IDs 变量为空。 ItemsAdder 在后台加载其内容。在 ItemsAdder 报告其物品已加载之前,该变量不会返回任何内容,因此请不要在启动期间读取它。
Give Item 没有给出任何东西。 itemId 不为 ItemsAdder 所知,因此不会构建任何物品,也不会给出任何东西。该动作会报告已给出 0。放不下的剩余物品会掉落在玩家脚下,除非关闭了 dropOverflow。
HUD fact 始终为 0。 该 HUD 的 id 必须在 ItemsAdder 中存在,并且玩家必须拥有它。ItemsAdder 无法列出 HUD,因此该 fact 只检查你指定的那一个。
相关扩展
- Nexo 和 Craft Engine — 针对其他自定义内容插件的同类集成。