跳到正文

Le Sieve

作者:A5ho9999

放入方块,取出物品。就这么简单。数据驱动的战利品表,支持方块标签和不同网格等级。(专为整合包设计,默认不含任何战利品表)

收藏

截图

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

用筛子筛方块来获取掉落物。筛子采用数据驱动设计,可筛选的内容及其掉落物由标签和战利品表控制,便于在整合包或其他模组中使用。

功能特色

  • 可合成的筛子方块
  • 6 种可合成的网筛等级
  • 线
  • 铜
  • 铁
  • 金
  • 钻石
  • 下界合金
  • 每种网筛都有独立的战利品表,因此更高级的网筛可以获得更好的掉落物
  • 完全通过标签和战利品表进行配置
  • 还有一些有趣的彩蛋

使用方法

  1. 放置筛子
  2. 手持网筛右键安装。手持另一种网筛右键即可更换
  3. 手持可筛选的方块右键筛子
  4. 继续右键即可筛选
  5. 重复操作

未来计划

  • 改进数据驱动的使用方式
  • 放宽命名空间路径限制

Display of all the crafting recipes

面向整合包和模组开发者

Le Sieve 使用两个标签和一个战利品表路径。所有内容都位于 le-sieve 命名空间中。

1. 可筛选的方块:le-sieve:sieveable(方块标签)

将任意方块添加到此标签后,其对应物品便可放入筛子。

data/le-sieve/tags/block/sieveable.json

{
  "values": [
    "minecraft:dirt",
    "minecraft:gravel"
  ]
}

只有拥有对应物品的方块才能使用

2. 可用作网筛的物品:le-sieve:sieve_meshes(物品标签)

内置网筛默认已包含在此标签中。

data/le-sieve/tags/item/sieve_meshes.json

{
  "values": [
    "le-sieve:string_mesh",
    "le-sieve:iron_mesh"
  ]
}

此标签决定哪些物品可以放入筛子。筛子中显示的网筛使用自定义物品类,因此其他模组的网筛需要基于 SieveMeshItem 构建才能正确渲染。标签中的其他物品仍可存放,但不会显示。

3. 掉落物:筛子战利品表

为每种可筛选方块添加战利品表,路径如下:

data/le-sieve/loot_table/sieve/<block_id>.json

<block_id> 是方块对应物品 ID 去掉命名空间后的路径。Dirt 对应 dirt.json,因此 minecraft:dirt 使用 data/le-sieve/loot_table/sieve/dirt.json。

规则:

  • 战利品表类型必须为 minecraft:block。其他类型都会被忽略,方块也会被消耗且不掉落物品。
  • 使用的网筛会作为工具传入。在每个掉落池上使用 minecraft:match_tool 条件,即可为不同网筛设置各自的掉落物。
  • 找不到战利品表或表为空时,会记录日志,并消耗材料且不掉落任何物品。
  • 战利品表始终会在 le-sieve 命名空间中查找,并且只使用物品路径。不同模组中路径相同的两个方块会共用同一张表。

示例:使用线网筛筛泥土时,可能掉落木棍、皮革,或什么也不掉落(权重分别为 30、30、5)。

{
  "type": "minecraft:block",
  "pools": [
    {
      "condition": {
        "type": "minecraft:match_tool",
        "predicate": {
          "items": "le-sieve:string_mesh"
        }
      },
      "entries": [
        {
          "type": "minecraft:item",
          "modifier": {
            "type": "minecraft:set_count",
            "count": {
              "type": "minecraft:uniform",
              "max": 1,
              "min": 1
            }
          },
          "name": "minecraft:stick",
          "weight": 30
        },
        {
          "type": "minecraft:item",
          "modifier": {
            "type": "minecraft:set_count",
            "count": {
              "type": "minecraft:uniform",
              "max": 1,
              "min": 1
            }
          },
          "name": "minecraft:leather",
          "weight": 30
        },
        {
          "type": "minecraft:empty",
          "weight": 5
        }
      ],
      "rolls": 1
    }
  ]
}

每种网筛添加一个掉落池。不符合已安装网筛条件的掉落池会被跳过。若要让一个掉落池适用于多种网筛,请改为按标签匹配。

使用数据生成工具生成战利品表

如果你使用 Fabric 数据生成工具,就不必手动编写 JSON。模组的 SieveLootTableProvider 中包含可公开调用的静态辅助方法,可在你自己的数据提供器中复用。

| 辅助方法 | 功能 |
| — | — |
| sieveDrop(item, weight) | 按指定权重掉落恰好 1 个物品 |
| sieveDrop(item, weight, min, max) | 随机掉落数量介于 min 和 max 之间的物品 |
| sieveEmpty() | 权重为 5 的“无掉落”条目 |
| sieveEmpty(weight) | 自定义权重的“无掉落”条目 |

每个辅助方法都会返回一个 LootPoolEntryContainer.Builder<?>,将其传入掉落池的 .add(...) 即可。

示例:砂砾战利品表中,铁网筛会掉落燧石(有时为 2 个)或什么也不掉落;金网筛则会掉落燧石或金粒。

biConsumer.accept(ResourceKey.create(Registries.LOOT_TABLE, LeSieveMod.Id("sieve/gravel")), GravelBuilder(itemLookUp));

private LootTable.@NotNull Builder GravelBuilder(HolderLookup.RegistryLookup<Item> itemLookUp) {
    LootTable.Builder builder = LootTable.lootTable().setParamSet(LootContextParamSets.BLOCK).withPool(LootPool.lootPool().setRolls(ContextIntProviders.exactly(1))
            .add(sieveDrop(Items.FLINT, 40, 1, 2))
            .add(sieveEmpty(10))
            .when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(itemLookUp, LeSieveItems.IRON_MESH))));

    builder.withPool(LootPool.lootPool().setRolls(ContextIntProviders.exactly(1))
            .add(sieveDrop(Items.FLINT, 30))
            .add(sieveDrop(Items.GOLD_NUGGET, 10))
            .add(sieveEmpty())
            .when(MatchTool.toolMatches(ItemPredicate.Builder.item().of(itemLookUp, LeSieveItems.GOLD_MESH))));

    return builder;
}

注意事项:

  • 战利品表键必须是 le-sieve:sieve/<item_path>。筛子会在该命名空间中查找,文件则会生成在 data/le-sieve/loot_table/sieve/ 下。
  • 战利品表的参数集必须为 LootContextParamSets.BLOCK。
  • 使用 MatchTool 和网筛物品来匹配网筛。只有安装了对应网筛时,该掉落池才会生效。

常见问题

Le Sieve 支持哪些 Minecraft 版本?

Le Sieve 支持 Minecraft Java 版 26.3,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

Le Sieve 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分

A5ho9999 的其他作品

查看全部 →