尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Minecraft 1.18.2 CraftTweaker 模组教程:从零掌握自定义合成表与脚本编写

Minecraft 1.18.2 CraftTweaker 模组教程:从零掌握自定义合成表与脚本编写 1. 从“玩别人的规则”到“制定自己的规则”如果你玩《我的世界》已经有一段时间厌倦了原版合成表的限制或者想为你的服务器或整合包创造独一无二的经济体系和玩法那么你肯定听说过或者想尝试修改合成表。在原版游戏中这几乎是不可能的任务但有了CraftTweaker一切都变得简单。CraftTweaker是一个强大的模组它允许你通过编写简单的脚本ZenScript来添加、移除、修改游戏中的合成配方、熔炉配方甚至更多。它把游戏的“规则书”交到了玩家手中。网上有很多教程但很多都停留在“复制粘贴”阶段告诉你加一行代码却不说清楚这行代码为什么这么写参数是什么意思以及写错了去哪里找错误。对于1.18.2这个长期支持版本相关的、成体系的、深入原理的中文教程更是稀缺。大部分玩家在尝试自定义时遇到一个脚本错误就卡住了因为看不懂那一长串英文报错也不知道如何排查。这篇内容就是为你解决这些问题而写的。我不会只给你一堆代码片段而是会带你理解CraftTweaker运作的底层逻辑从环境搭建、脚本语法、核心概念到实战编写、错误调试和高级应用。无论你是想为朋友的小服务器增加一个独特的装备合成链还是正在制作一个大型科技整合包需要精密平衡配方这篇文章都能让你从“跟着做”变成“懂得做”。我们将聚焦于1.18.2这个主流版本其原理同样适用于相近的版本如1.18.1 1.18。让我们开始吧把创造世界的权力真正握在自己手里。2. 搭建你的脚本实验室环境准备与模组安装在开始编写任何脚本之前一个稳定、正确的环境是基石。这一步看似简单却埋着最多的“坑”。很多新手失败的原因不是脚本写错了而是环境根本没配好。2.1 核心模组的选择与安装对于1.18.2你需要两个核心模组CraftTweaker这是主模组提供了修改配方的基础框架和应用程序接口。ZenScript这是CraftTweaker所使用的脚本语言的“引擎”。从1.16版本开始ZenScript被分离成一个独立的模组必须同时安装。如何获取强烈建议使用主流模组平台如CurseForge。搜索“CraftTweaker”和“ZenScript”确保你选择的文件版本号与你的游戏版本1.18.2完全一致并且注意模组加载器Forge或Fabric。CraftTweaker通常对Forge支持更完善本文也以Forge环境为例。将下载好的.jar文件放入游戏的mods文件夹即可。注意务必检查依赖关系。在CurseForge页面模组的“关系”一栏会写明其依赖。确保你的ZenScript版本与CraftTweaker版本兼容。通常安装最新版的二者即可。2.2 脚本文件的创建与位置CraftTweaker不会在安装后自动创建脚本文件夹你需要手动创建。这是第一个容易出错的地方。找到你的游戏运行目录。通常如果你使用官方启动器路径类似于C:\Users\你的用户名\AppData\Roaming\.minecraft。在该目录下找到或创建一个名为scripts的文件夹。注意是scripts复数形式且全部小写。所有你的脚本文件都将放在这个scripts文件夹内。脚本文件的后缀名是.zs。你可以用任何文本编辑器来编写它但推荐使用专为编程设计的编辑器如Visual Studio Code并安装ZenScript语法高亮插件或者使用Notepad。这能极大提高编写效率和减少语法错误。2.3 验证环境你的第一个脚本在深入之前让我们先确保一切就绪。创建一个最简单的脚本来测试。在scripts文件夹内新建一个文本文件将其重命名为test.zs。用编辑器打开它输入以下内容// 这是一个单行注释 print(Hello, CraftTweaker! 环境测试成功。);保存文件启动你的《我的世界》确保已安装上述两个模组。进入一个世界创造模式或生存模式均可打开聊天栏。如果环境配置正确你将在聊天栏看到绿色的输出文字[客户端线程/信息]Hello, CraftTweaker! 环境测试成功。如果没看到请按以下步骤排查检查游戏版本、Forge版本、模组版本是否匹配。确认scripts文件夹名称和位置完全正确。检查脚本文件名是否为.zs后缀。查看游戏日志文件.minecraft/logs/latest.log搜索“error”或“zencript”关键词通常会有更详细的错误信息。通过这个测试你就建立了一个可以即时反馈的调试环境。print函数是我们未来排查复杂错误的利器。3. 理解ZenScript的语法基石变量、数据类型与函数ZenScript是一门为《我的世界》模组定制的脚本语言它的语法很像JavaScript或Python但又有其独特之处。掌握基础语法是写出正确脚本的前提。3.1 变量与常量变量就像容器用来存储数据。在ZenScript中你需要先声明变量的类型。// 声明并赋值一个整数变量 var myNumber as int 42; // 声明并赋值一个字符串变量 var myName as string “Steve”; // 声明一个物品栈变量这是最常用的类型之一 var dirtStack as IItemStack item:minecraft:dirt;var是声明变量的关键字。as后面跟着数据类型如int整数、string字符串、IItemStack物品栈。用于赋值。语句末尾的;是必需的。常量使用val关键字一旦赋值就不能再修改。val PI as float 3.14159; // PI 3.14; // 这行会报错因为PI是常量3.2 核心数据类型与《我的世界》紧密相连ZenScript的数据类型直接映射游戏内的概念IItemStack (item:...)这是最核心的类型代表一组物品。用尖括号表示。item:minecraft:dirt一个泥土。item:minecraft:iron_ingot一个铁锭。item:minecraft:diamond_sword一个钻石剑。你还可以指定数量和NBT附加数据item:minecraft:cooked_beef.withTag({display: {Name: ‘“超级牛排”’}}); // 一个名为“超级牛排”的熟牛排 item:minecraft:stick * 4 // 四个木棍注意乘号ILiquidStack (fluid:...)代表流体同样使用尖括号。fluid:minecraft:water水。fluid:minecraft:lava岩浆。配方输入IIngredient这是一个更宽泛的概念代表可以放入合成格的东西。IItemStack就是一种IIngredient。你还可以使用“标签”它代表一类物品这在自定义整合包中极其有用。tag:items:minecraft:logs所有原木橡木、云杉木等。tag:items:forge:gems/diamond所有被标记为“钻石类宝石”的物品来自不同模组的钻石。3.3 函数调用与点运算符ZenScript通过“点运算符”.来调用函数或访问属性。// 调用打印函数 print(“这是一条信息”); // 物品栈的常用函数 var diamond item:minecraft:diamond; var diamondName as string diamond.displayName; // 获取显示名 var isFood as bool diamond.isFood(); // 判断是否为食物返回布尔值 // 添加合成配方这是一个函数调用下文会详细讲 craftingTable.addShaped(“unique_recipe_name”, item:minecraft:stick * 4, [ [item:minecraft:planks, null, item:minecraft:planks], [null, item:minecraft:planks, null], [item:minecraft:planks, null, item:minecraft:planks] ]);理解这些基础语法后你就具备了阅读和编写简单脚本的能力。接下来我们将进入实战核心——修改合成表。4. 重塑世界法则添加、移除与修改合成配方这是CraftTweaker最常用的功能。我们将分解有序合成、无序合成、熔炉合成等不同配方的操作方法。4.1 移除原有配方在添加自己的配方前通常需要先移除原版的配方以避免冲突或实现玩法变革。// 1. 移除工作台合成配方根据输出物 craftingTable.remove(item:minecraft:stick); // 移除所有输出为木棍的合成配方 craftingTable.remove(item:minecraft:iron_ingot); // 移除所有输出为铁锭的合成配方这会影响很多配方慎用 // 2. 更精准地移除通过指定输入来移除仅限有序合成 // 语法removeByRecipe(output, ingredients...) craftingTable.removeByRecipe(item:minecraft:torch, item:minecraft:coal, item:minecraft:stick); // 3. 移除熔炉配方 furnace.remove(item:minecraft:glass); // 移除所有输出为玻璃的熔炼配方 furnace.remove(item:minecraft:iron_ingot, item:minecraft:iron_ore as IIngredient); // 只移除铁矿石烧炼成铁锭的配方 // 4. 移除所有合成配方核弹选项通常用于制作空白的整合包 // craftingTable.removeAll();重要提示remove函数非常强大也极其危险。remove(item:minecraft:iron_ingot)会移除所有能合成出铁锭的配方包括工作台、熔炉、切石机等。在执行移除操作前最好先在你的测试脚本里用print输出一下计划移除的物品确认无误后再取消注释。建议在整合包开发中先写移除脚本加载进游戏验证无误后再开始写添加脚本。4.2 添加有序合成配方Shaped Crafting有序合成要求物品按特定排列摆放如原版的工具、盔甲。// 语法craftingTable.addShaped(recipeName, output, ingredientsMatrix); craftingTable.addShaped(“my_sword_recipe”, item:minecraft:diamond_sword, [ [item:minecraft:diamond, null, item:minecraft:diamond], [null, item:minecraft:diamond, null], [null, item:minecraft:stick, null] ]);recipeName配方的唯一标识符字符串。可以任意取名但最好具有描述性且唯一便于管理和调试。如果重复后加载的会覆盖先加载的。output合成输出一个IItemStack。可以指定数量如item:minecraft:stick * 4。ingredientsMatrix一个二维数组3x3描述合成网格。每个位置可以是一个IIngredient物品、标签或者是null表示该格必须为空。上述例子描述了一个“V”字形排列的钻石剑配方第一行左右各一个钻石中间空第二行中间一个钻石第三行中间一个木棍。使用变量和标签让脚本更强大val anyLog as IIngredient tag:items:minecraft:logs; // 任意原木 val anyPlank as IIngredient tag:items:minecraft:planks; // 任意木板 craftingTable.addShaped(“wooden_tool_unification”, item:minecraft:wooden_pickaxe, [ [anyPlank, anyPlank, anyPlank], [null, item:minecraft:stick, null], [null, item:minecraft:stick, null] ]); // 这个配方允许你用任意木板橡木、杉木等合成木镐实现了模组间木板的统一。4.3 添加无序合成配方Shapeless Crafting无序合成只关心有哪些物品不关心摆放位置如原版的发酵蛛眼、染料混合。// 语法craftingTable.addShapeless(recipeName, output, ingredientsArray); craftingTable.addShapeless(“super_dye”, item:minecraft:purple_dye * 2, [ item:minecraft:blue_dye, item:minecraft:red_dye, item:minecraft:bone_meal ]);ingredientsArray一个一维数组列出所有需要的材料数量不限。游戏会检查玩家是否拥有数组中的所有物品数量足够而不在乎它们在工作台里怎么摆。4.4 添加熔炉配方熔炉配方包括烧炼、烟熏、高炉、营火等。// 1. 添加普通熔炉烧炼配方 // 语法furnace.addRecipe(recipeName, output, input, xp?); furnace.addRecipe(“smelt_copper”, item:minecraft:copper_ingot, item:minecraft:copper_ore, 0.7); // 将铜矿石烧炼成铜锭并获得0.7点经验。 // 2. 添加燃料1.18 方式略有不同通常通过修改物品的燃烧时间标签实现但CraftTweaker有更直接的方式 // 注意在1.18.2直接添加燃料的API可能有所变化。更可靠的方式是使用物品标签或数据包。 // 以下是一种可能的方法取决于CraftTweaker的具体版本 // furnace.addFuel(IIngredient fuel, int burnTime); // furnace.addFuel(item:my_mod:my_coal, 1600); // 假设的API请查阅对应版本的文档 // 3. 添加烟熏炉、高炉等专用配方 // 它们有独立的全局变量 smoker.addRecipe(“smoke_fish”, item:minecraft:cooked_cod, item:minecraft:cod, 0.35); blastFurnace.addRecipe(“blast_iron”, item:minecraft:iron_ingot, item:minecraft:iron_ore, 0.7);4.5 修改替换现有配方有时你不想移除再添加而是想直接修改一个已有配方的输出或输入。CraftTweaker没有直接的“修改”函数但可以通过“移除特定配方添加新配方”的组合拳来实现关键是精准定位要移除的旧配方。// 目标将原版石剑的配方输出改为2个石剑恶搞向 // 第一步精准移除原版石剑配方有序合成 craftingTable.removeByRecipe(item:minecraft:stone_sword, item:minecraft:cobblestone, null, item:minecraft:cobblestone, null, item:minecraft:cobblestone, null, null, item:minecraft:stick, null ); // 注意removeByRecipe需要完全匹配原版配方的9个格子3x3用null表示空格。 // 第二步添加新的石剑配方 craftingTable.addShaped(“double_stone_sword”, item:minecraft:stone_sword * 2, [ [item:minecraft:cobblestone, null, item:minecraft:cobblestone], [null, item:minecraft:cobblestone, null], [null, item:minecraft:stick, null] ]);这个过程要求你知道原版配方的精确布局。你可以通过游戏内查询或使用类似JEIJust Enough Items模组来查看配方。5. 进阶实战与高效调试打造复杂合成体系掌握了基础操作后我们可以构建更复杂、更有趣的合成体系并学习如何高效地排查脚本错误。5.1 实现合成序列与中间产物在大型整合包中物品往往需要多步合成。清晰的脚本结构至关重要。// 示例创建一个“压缩圆石”的合成序列 // 1. 基础材料压缩圆石 I (9个圆石) craftingTable.addShaped(“compressed_cobble_i”, item:minecraft:cobblestone * 9, [ // 注意输出是9个圆石这里只是示例实际会用一个自定义物品 [item:minecraft:cobblestone, item:minecraft:cobblestone, item:minecraft:cobblestone], [item:minecraft:cobblestone, item:minecraft:cobblestone, item:minecraft:cobblestone], [item:minecraft:cobblestone, item:minecraft:cobblestone, item:minecraft:cobblestone] ]); // 假设 item:my_mod:compressed_cobblestone_i 是我们的自定义物品 val compCobbleI item:my_mod:compressed_cobblestone_i; // 2. 二级材料压缩圆石 II (9个压缩圆石 I) craftingTable.addShaped(“compressed_cobble_ii”, item:my_mod:compressed_cobblestone_ii, [ [compCobbleI, compCobbleI, compCobbleI], [compCobbleI, compCobbleI, compCobbleI], [compCobbleI, compCobbleI, compCobbleI] ]); // 3. 可逆合成将1个压缩圆石II分解回9个压缩圆石I craftingTable.addShapeless(“decompress_cobble_ii”, compCobbleI * 9, [item:my_mod:compressed_cobblestone_ii]);5.2 使用函数和循环简化脚本当需要添加大量相似配方时手动编写每个配方是低效的。ZenScript支持函数和循环。// 定义一个函数用于添加一套“染色木板”的合成配方 function addDyedPlankRecipes(color as string, dye as IIngredient) { val plankTag tag:items:minecraft:planks; val dyedPlank item:my_mod:%color%_planks; // 假设你的模组物品ID格式为 modid:color_planks craftingTable.addShaped(“dyed_plank_%color%”, dyedPlank * 8, [ [plankTag, plankTag, plankTag], [plankTag, dye, plankTag], [plankTag, plankTag, plankTag] ]); } // 调用函数批量添加 addDyedPlankRecipes(“red”, item:minecraft:red_dye); addDyedPlankRecipes(“blue”, item:minecraft:blue_dye); addDyedPlankRecipes(“green”, item:minecraft:green_dye); // ... 可以轻松扩展更多颜色5.3 脚本错误的排查与日志分析脚本出错时游戏会加载失败或在日志中报错。学会看日志是必备技能。定位日志文件游戏根目录下的.minecraft/logs/latest.log或debug.log。搜索关键词用文本编辑器打开日志搜索[错误]、ERROR、zen、crafttweaker。解读错误信息语法错误例如缺少分号;括号不匹配。错误信息通常会给出行号。ERROR: scripts/recipe.zs:15: Missing ;这表示recipe.zs文件的第15行缺少分号。类型错误传递了错误类型的参数。ERROR: scripts/recipe.zs:22: Cannot cast crafttweaker.api.item.IItemStack to crafttweaker.api.item.IIngredient这通常意味着某个函数需要一个IIngredient如标签但你给了它一个具体的IItemStack。解决方法是确保使用正确的类型或者使用as IIngredient进行转换如果适用。未知项错误引用了不存在的物品。ERROR: scripts/recipe.zs:5: Unknown item my_mod:super_ingot检查物品ID是否正确模组是否已安装以及该物品是否确实存在于该模组中。使用print调试在怀疑的地方插入print语句输出变量的值这是最直接的调试方法。val testItem item:minecraft:diamond; print(“测试物品ID” testItem.commandString); // commandString 属性返回物品的标准表示形式 // 输出[客户端线程/信息]测试物品IDitem:minecraft:diamond5.4 加载顺序与脚本文件管理CraftTweaker会按字母顺序加载scripts文件夹下的所有.zs文件。这会影响配方移除和添加的顺序。最佳实践00_remove.zs将所有移除配方的脚本放在以数字或字母顺序靠前命名的文件中如00_开头。确保先移除再添加。10_base_recipes.zs添加基础、核心的合成配方。20_machine_recipes.zs添加机器相关的配方熔炉、粉碎机等。99_debug.zs放置调试用的脚本或临时配方。这种命名方式确保了清晰的加载顺序便于管理和维护大型脚本库。6. 超越合成表CraftTweaker的其他强大功能CraftTweaker的能力远不止修改合成配方。它几乎可以触及游戏数据驱动的各个方面。6.1 修改物品属性你可以动态修改物品的耐久、挖掘等级、攻击伤害等属性取决于模组支持程度。这通常通过访问物品的“属性”来实现。import crafttweaker.api.item.AttributeHelper; // 可能需要导入相关类 val diamondSword item:minecraft:diamond_sword; // 注意直接修改原版物品属性可能受限。更常见的做法是作用于自定义物品或通过其他模组接口。 // 以下为概念性代码具体API请查阅CraftTweaker文档。 // diamondSword.maxDamage 5000; // 将钻石剑耐久设为50006.2 处理矿物词典与标签Tags这是实现跨模组兼容性的关键。现代《我的世界》使用“标签”系统来统一同类物品。// 检查一个物品是否属于某个标签 val ironIngot item:minecraft:iron_ingot; if(ironIngot.hasTag(tag:items:forge:ingots/iron)) { print(“铁锭属于‘forge:ingots/iron’标签”); } // 使用标签作为合成材料让你的配方兼容所有模组的铁锭 craftingTable.addShaped(“universal_iron_block”, item:minecraft:iron_block, [ [tag:items:forge:ingots/iron, tag:items:forge:ingots/iron, tag:items:forge:ingots/iron], [tag:items:forge:ingots/iron, tag:items:forge:ingots/iron, tag:items:forge:ingots/iron], [tag:items:forge:ingots/iron, tag:items:forge:ingots/iron, tag:items:forge:ingots/iron] ]);6.3 与JEIJust Enough Items模组联动JEI是查看配方的必备模组。CraftTweaker可以隐藏JEI中的配方这对于移除配方后清理界面非常有用。import mods.jei.JEI; // 需要导入JEI支持类 // 隐藏一个合成配方使其不在JEI中显示 JEI.hide(item:minecraft:stick); // 隐藏所有木棍的合成配方 JEI.hide(item:minecraft:iron_ingot); // 隐藏所有铁锭的获取方式慎用 // 添加一个自定义的信息页面描述 JEI.addDescription(item:my_mod:special_item, [ “这是一个非常特殊的物品”, “它由9个钻石块在信标下合成。”, “用途用来制作终极装备。” ]);6.4 使用CraftTweaker命令行在游戏中你可以使用/ct命令来与CraftTweaker交互这是一个强大的实时调试工具。/ct recipes查看某个物品的所有合成配方包括你添加的。例如/ct recipes minecraft:diamond/ct hand或/ct inventory获取你手中或背包内物品的CraftTweaker表示字符串方便你复制到脚本中。/ct syntax检查一段ZenScript代码的语法是否正确而无需重启游戏。/ct reload重新加载所有脚本在游戏内。这是最常用的命令。修改脚本文件并保存后在游戏中输入/ct reload即可立即应用更改无需重启游戏极大提高了开发效率。7. 从理论到实践一个完整的自定义合成包案例让我们将所有知识串联起来完成一个小型项目修改原版 Minecraft 1.18.2使得获取钻石装备的难度大幅提升并引入一个“下界合金锭”的替代合成路径。设计目标移除原版用钻石合成钻石工具、盔甲的配方。钻石工具、盔甲现在需要用“压缩钻石”合成。“压缩钻石”由9个钻石合成。下界合金锭可以通过在锻造台用“压缩钻石”和“下界合金碎片”合成获得替代原版用钻石锭升级。实现脚本 (my_hardcore_tweaks.zs):// 第一部分配方移除 print(“开始移除原版简易钻石配方...”); // 移除所有钻石工具和剑的合成配方更安全的方式逐个移除 craftingTable.remove(item:minecraft:diamond_pickaxe); craftingTable.remove(item:minecraft:diamond_axe); craftingTable.remove(item:minecraft:diamond_shovel); craftingTable.remove(item:minecraft:diamond_hoe); craftingTable.remove(item:minecraft:diamond_sword); // 移除钻石盔甲合成配方 craftingTable.remove(item:minecraft:diamond_helmet); craftingTable.remove(item:minecraft:diamond_chestplate); craftingTable.remove(item:minecraft:diamond_leggings); craftingTable.remove(item:minecraft:diamond_boots); // 注意我们没有移除钻石块、附魔台等配方保持部分用途。 print(“原版钻石装备配方移除完成。”); // 第二部分添加新材料“压缩钻石” // 假设我们通过资源包添加了一个名为‘压缩钻石’的物品其ID为 ‘my_tweaks:compressed_diamond’ // 在脚本中我们使用这个ID。如果只是概念我们可以先用钻石块代替演示。 val compressedDiamond item:minecraft:diamond_block; // 临时用钻石块代替实际应为item:my_tweaks:compressed_diamond // 或者更真实的做法是我们修改钻石块的合成让它代表“压缩钻石”的概念。 // 这里我们直接修改钻石块的合成使其需要9个钻石。 craftingTable.remove(item:minecraft:diamond_block); // 先移除原版9钻石合1块的配方 craftingTable.addShaped(“hardcore_compressed_diamond”, item:minecraft:diamond_block, [ [item:minecraft:diamond, item:minecraft:diamond, item:minecraft:diamond], [item:minecraft:diamond, item:minecraft:diamond, item:minecraft:diamond], [item:minecraft:diamond, item:minecraft:diamond, item:minecraft:diamond] ]); // 现在钻石块在我们的设定里就是“压缩钻石”。 // 第三部分用“压缩钻石”合成钻石装备 val cd item:minecraft:diamond_block; // 简称 // 钻石剑 craftingTable.addShaped(“hardcore_diamond_sword”, item:minecraft:diamond_sword, [ [cd, null, cd], [null, cd, null], [null, item:minecraft:stick, null] ]); // 钻石镐 craftingTable.addShaped(“hardcore_diamond_pickaxe”, item:minecraft:diamond_pickaxe, [ [cd, cd, cd], [null, item:minecraft:stick, null], [null, item:minecraft:stick, null] ]); // 钻石胸甲 (简化版实际更复杂) craftingTable.addShaped(“hardcore_diamond_chestplate”, item:minecraft:diamond_chestplate, [ [cd, null, cd], [cd, cd, cd], [cd, cd, cd] ]); print(“新的钻石装备合成配方已添加。”); // 第四部分修改下界合金锭合成 // 原版下界合金锭无法直接合成我们添加一个锻造台配方。 // 注意1.18 修改锻造台配方可能需要其他模组支持如 CraftTweaker 的附属模组 ‘ModTweaker’ 或特定处理器。 // 这里以概念为例假设有一个全局变量 smithing 可以添加配方。 // import mods.smithing.Smithing; // 假设的导入 // 移除原版下界合金锭的获取不我们无法直接移除远古残骸烧炼。我们选择添加一个替代合成路径。 // 假设我们允许在锻造台用“压缩钻石”和“下界合金碎片”合成下界合金锭。 // Smithing.addRecipe(“netherite_from_compressed”, item:minecraft:netherite_ingot, cd, item:minecraft:netherite_scrap); // 由于原版锻造台是‘升级’模板并非简单合成直接添加可能复杂。更可行的方案是添加一个工作台合成。 craftingTable.addShaped(“hardcore_netherite_ingot”, item:minecraft:netherite_ingot, [ [item:minecraft:gold_ingot, item:minecraft:gold_ingot, item:minecraft:gold_ingot], [item:minecraft:gold_ingot, cd, item:minecraft:gold_ingot], // 中心是压缩钻石 [item:minecraft:netherite_scrap, item:minecraft:netherite_scrap, item:minecraft:netherite_scrap] ]); print(“新的下界合金锭合成配方已添加需要压缩钻石。”); // 第五部分清理JEI显示 import mods.jei.JEI; // 隐藏我们移除的原版配方使JEI界面更干净 JEI.hide(item:minecraft:diamond_pickaxe); JEI.hide(item:minecraft:diamond_axe); // ... 隐藏所有我们移除的钻石装备 JEI.hide(item:minecraft:diamond_sword); JEI.hide(item:minecraft:diamond_helmet); JEI.hide(item:minecraft:diamond_chestplate); JEI.hide(item:minecraft:diamond_leggings); JEI.hide(item:minecraft:diamond_boots); // 为我们新增的配方添加描述 JEI.addDescription(item:minecraft:diamond_block, [ “§6压缩钻石§r”, “由9个钻石合成而成。”, “是制作高级钻石装备和下界合金的关键材料。” ]); print(“ 我的硬核合成调整脚本加载完成 ”);部署与测试将上述脚本保存为my_hardcore_tweaks.zs放入scripts文件夹。启动游戏进入世界。输入/ct reload重载脚本。检查聊天栏是否有成功加载的打印信息。打开工作台和JEI验证原版钻石装备配方是否消失新的配方是否出现。通过这个案例你体验了从设计、编写、调试到验证的完整流程。在实际操作中你可能会遇到各种边界情况比如物品ID错误、配方冲突等这时就需要运用前面章节学到的调试技巧查看日志使用/ct hand和/ct reload来快速迭代。走到这里你已经从一个合成表修改的新手成长为能够自主设计并实现复杂合成体系的修改者。关键在于多动手、多测试、多查文档CraftTweaker的官方Wiki或社区教程。每个成功的整合包背后都是无数次脚本重载和调试的结果。现在打开你的游戏开始创造属于你自己的独一无二的合成法则吧。
返回列表