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

这有帮助吗?

  1. 配方

通用配方修改

在模组配方修改时,我们需要一个 Recipe Type,而使用数据包修改时,我们从来没有担心过这个。这是因为根据 json 转换出的配方会根据 IRecipe#getRecipeType 方法来确定他应该加在哪个 Recipe Type 里。在 CrT 7.1.0.243 添加了 GenericRecipeManager,你只需要配方名和 json 就可以直接添加任何配方。

调用

使用 recipes 全局变量即可。

是的,在 1.12.2 及以下的版本,recipes 代表的是工作台配方。

在 1.12.2 之前,IRecipe 的概念只存在于工作台中,而在高版本,IRecipe 用在了各种机器,从原版的熔炉到星辉的祭坛都使用了它。

recipes 从只代表工作台配方升格为游戏内的全部配方,而工作台配方则变成了 craftingTable(即工作台的英文)。

若要针对特定机器的配方,参考上章,用 Recipe Type 尖括号引用。

添加配方

recipes.addJSONRecipe(name as String, data as IData);

name 就是配方名,相当于你在数据包添加的配方的文件名。

data 就是配方的具体内容,就是你在数据包添加的配方的文件内容。

当然上章也说过,我们可以复用 CrT 类,它们会自动转换为 IData。(虽然不能很好的解决材料数量)

recipes.addJSONRecipe("recipe_name", {
    type: "minecraft:smoking",
    ingredient: <item:minecraft:gold_ore>,
    result: <item:minecraft:cooked_porkchop>,
    experience: 0.35 as float,
    cookingtime: 100
 });

移除配方

与工作台配方一样,craftingTable 改成 recipes 即可。但注意它会影响游戏内所有 Recipe Type 的配方。

// 将会删除魔力钢锭的全部配方,包括块分锭和粒合锭的工作台配方以及铁锭的魔力灌注配方。
recipes.removeRecipe(<item:botania:manasteel_ingot>);
上一页模组配方修改下一页配方材料替换

最后更新于4年前

这有帮助吗?