Cog
  • 首页
  • 导论
    • 脚本
    • 指令
  • 配方
    • 物品
    • 标签
    • 原版配方修改
    • 模组配方修改
    • 通用配方修改
    • 配方材料替换
  • ZenCode
    • 数据类型
    • 运算符
    • if
    • switch
    • 循环
    • 数组
    • List
    • 映射
    • 数学函数
    • 函数
    • lambda 表达式
    • 预处理器
    • OOP
      • 自定义类
      • 拓展类
      • 空类型安全
      • 运算符重载
      • 泛型
    • 变量代理
  • 高级运用
    • Tooltip
    • 属性修改
    • 物品条件
    • 物品转换器
    • 配方函数
    • 事件
    • 全局战利品修饰器
      • 战利品修饰器
      • 方块掉落修改
      • 实体掉落修改
      • 战利品修饰器管理器
  • ContentTweaker
    • 前言
    • 资源文件
    • 物品
    • 方块
    • 流体
    • 创造标签
    • 高级运用
由 GitBook 提供支持
在本页
  • 创建
  • CrT 对耐久的额外支持

这有帮助吗?

  1. 高级运用

物品条件

有时候普通的物品还不足以使用,可能需要一些特殊的合成,只有在完全满足对应条件下才会工作。

创建

使用 IIngredient 的 onlyIf 方法。这个方法有两个参数:

  • uid as string:物品条件的 ID,ID 要相互独立。建议如果要用多次带有物品条件的物品,先把他存进变量里。

  • function as Predicate<IItemStack>:一个以 IItemStack 为参数,返回值为 bool 的 lambda 表达式。用于确定怎样的具体物品才能参与合成。

再说一遍,标签不是 IIngredient,要想使用对物品标签使用物品条件,你必须先用 asIIngredient 方法把标签转换成材料!

// 只有含有 Display NBT 的铁锭才能参与合成

<tag:items:forge:ingots/iron>.asIIngredient().onlyIf("helloworld", (stack) => {
    return stack.tag.contains("Display");
})

CrT 对耐久的额外支持

对于耐久,CrT 有两个内置的物品条件,我们可以直接使用:onlyDamaged 和 anyDamage。

<item:minecraft:iron_pickaxe>.anyDamage(); // 任何耐久的铁镐
<item:minecraft:diamond_pickaxe>.onlyDamaged(); // 有损耗的钻石镐
上一页属性修改下一页物品转换器

最后更新于4年前

这有帮助吗?