箱子战利品扩展器

箱子战利品扩展器

扩展世界宝箱的战利品池 - 适用于模组创作者和玩家

游戏玩法

从 1.0.0 迁移到 1.1.0+

ItemDropList 现在必须以 "Drop_LootExtender_" 开头,而非 "Drop_ChestLootExtender_"

介绍

本模组面向以下人群

  • 想要让物品出现在宝箱、生物和方块战利品池中的模组包创作者。
  • 想要调整掉落战利品池的玩家。

工作原理

本插件能够通过使用 ItemDropList(物品掉落列表)来扩展战利品池,你可以在内置的资源编辑器中配置这些列表。

ItemDropList 只需要一个以 "Drop_LootExtender_" 开头的名称,以及一些附加的元数据来指定何时使用该 ItemDropList。

可以有任意数量的 ItemDropList,它们可以来自任意数量的模组。如果存在多个可用于给定场景的 ItemDropList,插件将简单地随机选择一个使用。

为什么不覆盖现有的 ItemDropList?

  1. 目前,在资源编辑器中没有原生方法来配置世界宝箱中会出现哪些物品。

  2. 对于生物和方块的其他掉落物,(据我所知)多个模组无法扩展同一个 ItemDropList。只有一个模组能够决定如何覆盖该 ItemDropList。

使用战利品扩展器,任意数量的模组都可以为来自同一个宝箱、生物或方块的掉落物添加额外物品,而不会发生冲突。

注意事项

默认情况下,此插件将扩展任何现有宝箱的战利品,包括你在安装插件之前放置的任何宝箱。

为了防止它向你自己的宝箱中添加额外物品,你可以在你的基地中使用 /le-exclude-nearby 命令,让插件忽略 100 格半径内的所有宝箱。

创建 ItemDropList

访问资源编辑器

  1. 按 Enter 键打开聊天,然后输入 /op self
  2. 按 'O' 键切换到创造模式。
  3. 按 Tab 键打开物品栏。
  4. 点击 创造工具 > 资源 > 资源编辑器。

创建 ItemDropList

  1. 在资源编辑器中,点击 '...' 并选择 添加资源包(或者使用已有的资源包)。
  2. 点击 '+' 打开创建物品菜单。
  3. 将 资源类型 设置为 物品掉落列表,并使用一个以 "Drop_LootExtender_" 开头的 ID,例如 "Drop_LootExtender_YourMod_Chests"
  4. 点击 创建。
  5. 在 源 选项卡中,将所有内容替换为以下内容:
{
  "Container": {
    "Type": "Choice",
    "Containers": [
      {
        "Type": "Single",
        "Weight": 0,
        "Item": {
          "Metadata": {
            "ChestIds": [
              "Furniture.*Chest.*"
            ]
          }
        }
      },
      {
        "Type": "Empty",
        "Weight": 10
      },
      {
        "Type": "Single",
        "Item": {
          "ItemId": "Fish_Salmon_Item"
        },
        "Weight": 1
      }
    ]
  }
}

容器 0 - 用于元数据,指定你的物品掉落列表将用于哪些宝箱、生物或方块。

容器 1 - 用于指定宝箱中不添加额外物品的可能性。

其余容器可用于添加你想要的任何物品。

元数据

元数据可以包含一个或多个过滤器。

你需要至少包含 ChestIds、BlockIds 或 NPCIds 才能使你的 ItemDropList 生效。

ChestIds

这是一个 ID 列表,物品掉落列表将用于这些 ID。

ID 可以包含 RegEx(正则表达式),例如 "Furniture.*Chest.*" 用于选择所有宝箱。

"Furniture.*Chest.*" - 所有以单词 "Furniture" 开头且包含单词 "Chest" 的 ID。

如果你想定位两个特定的宝箱:

"ChestIds": [
  "Furniture_Ancient_Chest_Small",
  "Furniture_Temple_Dark_Chest_Small"
]

BlockIds

与 ChestIds 类似,但指定的是哪些方块在被破坏时将使用此 ItemDropList。

NPCIds

与 ChestIds 类似,但指定的是哪些生物在被击败时将使用此 ItemDropList。

ZoneNames

与 ChestIds 类似,但指定的是此 ItemDropList 应使用于哪些区域。

BiomeNames

与 ChestIds 类似,但指定的是此 ItemDropList 应使用于哪些生物群系。

MinY

玩家应使用此 ItemDropList 时的最小 Y 坐标。

MaxY

玩家应使用此 ItemDropList 时的最大 Y 坐标。

示例

"Metadata": {
    "ChestIds": [
        "Furniture.*Chest.*"
    ],
    "BlockIds": [
        "Soil_.*"
    ],
    "NPCIds": [
        "Skeleton_.*"
    ],
    "ZoneNames": [
        "Zone1_.*"
    ],
    "BiomeNames": [
        ".*_Tier2"
    ],
    "MaxY": 130,
    "MinY": 90
}

通过此示例,当玩家在 Zone1 区域、生物群系 Tier2、且位于水面附近时,打开任何宝箱、破坏任何 Soil 方块或击杀任何 Skeleton 生物时,都将使用该物品掉落列表。

指令

这些指令是可选的,因为你不需要使用任何指令即可使用插件。

/le-reset-chests - 重置所有宝箱的状态,允许插件扩展任何被打开的宝箱的战利品。

/le-exclude-nearby - 防止 100 格半径内的宝箱获得扩展战利品。

/le-clear-cache - 清除基于场景选择 ItemDropList 的缓存。

/le-location - 为你提供玩家当前所在的区域、生物群系和 Y 坐标。

测试你的 ItemDropList

在对 ItemDropList 的元数据进行任何更改后,建议使用 /le-clear-cache 指令。

此外,在测试掉落列表时,将第二个容器的权重(Weight)降低到 0 会有所帮助,这样总会掉落一个物品。完成后请记得将其改回。

测试方块

确保你没有处于创造模式,然后破坏你在 BlockIds 元数据中指定的方块。

如果物品掉落,则说明其按预期工作。

测试生物

击杀你在 NPCIds 元数据中指定的生物。

如果物品掉落,则说明其按预期工作。

测试宝箱

  1. 放置一批宝箱。
  2. 使用 /le-reset-chests 指令(清除宝箱的玩家放置状态)。
  3. 打开宝箱。

如果 ItemDropList 创建正确,你应该会看到来自你 ItemDropList 的物品出现在宝箱中。

要再次测试,你应该首先破坏这些宝箱,否则战利品会被扩展两次。

测试区域、生物群系和 Y 坐标

使用 /le-location 指令获取你当前的区域、生物群系和 Y 坐标。

如果你当前处于正确的区域、生物群系和 Y 坐标,并且物品掉落,则说明其按预期工作。

特色模组

Hytaria - Terraria 3D - Hytale Mods - CurseForgeMarkebarca_Mods 制作。

使用 LootExtender 1.0.0 配置宝箱战利品。