From cd9abda48beca90881924121ebae9f9fc2f5190e Mon Sep 17 00:00:00 2001 From: wenhe <1046926120@qq.com> Date: Thu, 23 Jul 2026 16:20:34 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=92=E8=8F=9C=E5=B7=A5=E5=85=B7=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ModUtil/Normal.py | 2 +- .../ceshi/ToolData.py | 272 ++++++++++++++++++ 2 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ceshi/ToolData.py diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ModUtil/Normal.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ModUtil/Normal.py index f2a913e..14796ca 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ModUtil/Normal.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ModUtil/Normal.py @@ -17,4 +17,4 @@ def SetItemOil(itemDict, oiled): def GetItemOil(itemDict): """获取物品是否含油""" - return NbtTranslator(GetItemUserData(itemDict, 'rtdd')).get('oil', False) + return NbtTranslator(GetItemUserData(itemDict, 'rtdd')).get('oil', False) \ No newline at end of file diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ceshi/ToolData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ceshi/ToolData.py new file mode 100644 index 0000000..6ac68b9 --- /dev/null +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ceshi/ToolData.py @@ -0,0 +1,272 @@ +# -*- coding: utf-8 -*- +""" +工具配置数据库(ToolData.py) +============================ +独立于 RecipeData.py,专门管理烹饪工具的配置信息: + - 每个工具的激活方式(用什么物品右键激活) + - 底座要求(下面必须放什么方块才能工作) + - 哪些工具本身可以作为底座(发热源) + - 工具的状态切换链 + +与 RecipeData.py 的关系: + RecipeData.py = 食材配方(什么食材+什么锅 = 什么菜) + ToolData.py = 工具配置(锅怎么激活、需要什么底座) + +CookingService 会同时加载这两个数据库,做菜时先检查工具配置,再查配方。 +""" + +# ============================================================ +# 一、工具激活/底座配置 +# ============================================================ +# 格式:工具源方块 -> {激活物品, 底座列表, 激活后目标, 其他配置} +# 当玩家用指定物品右键工具时,工具从"源方块"变成"目标方块" +# 如果底座列表不为空,工具下面必须有一个底座方块才能激活 + +TOOL_CONFIG = { + # ==================== 炒锅 ==================== + "rtdd:wok": { + "name": "炒锅", + "activate_item": "rtdd:spatula_oil", # 用带油锅铲激活 + "check_oil": True, # 需要检查物品含油标签 + "base_blocks": [ # 下面必须放这些方块之一 + "minecraft:campfire", # 营火 + "rtdd:barbecuegrill_1", # 点火的烧烤炉 + "minecraft:soul_campfire", # 灵魂营火 + ], + "target": "rtdd:oilpan", # 激活后变成煎锅 + "need_fire": True, # 需要火源 + "is_heat_source": False, # 不是发热源 + }, + + # ==================== 煎锅 ==================== + "rtdd:oilpan": { + "name": "煎锅", + "activate_item": "rtdd:spatula_oil", # 用带油锅铲激活 + "check_oil": True, + "base_blocks": [ + "minecraft:campfire", + "rtdd:barbecuegrill_1", + "minecraft:soul_campfire", + ], + "target": "rtdd:oilpan", # 激活后不变(只是上油标记) + "need_fire": True, + "is_heat_source": False, + }, + + # ==================== 油锅 ==================== + "rtdd:oilpot_0": { + "name": "油锅", + "activate_item": "rtdd:oilcan", # 用油罐直接激活 + "check_oil": False, # 不需要检查物品含油 + "base_blocks": [ + "minecraft:campfire", + "rtdd:barbecuegrill_1", + "minecraft:soul_campfire", + "minecraft:magma", # 岩浆块也可以 + ], + "target": "rtdd:oilpot_1", # 激活后变成倒了油的油锅 + "need_fire": True, + "is_heat_source": False, + }, + + # ==================== 汤锅 ==================== + "rtdd:potsimmering_0": { + "name": "汤锅", + "activate_item": "minecraft:water_bucket", # 用水桶加水 + "check_oil": False, + "base_blocks": [ + "minecraft:campfire", + "rtdd:barbecuegrill_1", + "minecraft:soul_campfire", + "minecraft:magma", + ], + "target": "rtdd:potsimmeringwater", # 激活后变成加了水的汤锅 + "need_fire": True, + "is_heat_source": False, + }, + + # ==================== 蒸笼 ==================== + "rtdd:steamer": { + "name": "蒸笼", + "activate_item": "rtdd:steamercover", # 用蒸笼盖盖盖 + "check_oil": False, + "base_blocks": [ + "minecraft:campfire", + "rtdd:barbecuegrill_1", + ], + "target": "rtdd:steamer", # 盖盖后不变(只是标记已盖盖) + "need_fire": True, + "is_heat_source": False, + }, + + # ==================== 烧烤炉 ==================== + "rtdd:barbecuegrill_0": { + "name": "烧烤炉", + "activate_item": "minecraft:flint_and_steel", # 打火石点火 + "check_oil": False, + "base_blocks": [], # 不需要底座(自己就是发热源) + "target": "rtdd:barbecuegrill_1", # 点火后变成烧烤炉_1 + "need_fire": False, + "is_heat_source": False, # 0状态还没点火,不是发热源 + }, + + # ==================== 搅拌器 ==================== + "rtdd:beater": { + "name": "搅拌器", + "activate_item": None, # 不需要激活,直接放食材 + "check_oil": False, + "base_blocks": [], # 手工工具,不需要底座 + "target": None, + "need_fire": False, + "is_heat_source": False, + }, + + # ==================== 榨汁机 ==================== + "rtdd:juicer_0": { + "name": "榨汁机", + "activate_item": None, + "check_oil": False, + "base_blocks": [], + "target": None, + "need_fire": False, + "is_heat_source": False, + }, + + # ==================== 丸子机 ==================== + "rtdd:meatballmaker_0": { + "name": "丸子机", + "activate_item": None, + "check_oil": False, + "base_blocks": [], + "target": None, + "need_fire": False, + "is_heat_source": False, + }, + + # ==================== 酒桶 ==================== + "rtdd:wine_barrel": { + "name": "酒桶", + "activate_item": None, + "check_oil": False, + "base_blocks": [], + "target": None, + "need_fire": False, + "is_heat_source": False, + }, + + # ==================== 面粉方块 ==================== + "rtdd:farineblock": { + "name": "面粉方块", + "activate_item": None, + "check_oil": False, + "base_blocks": [], + "target": None, + "need_fire": False, + "is_heat_source": False, + }, +} + +# ============================================================ +# 二、发热源配置(哪些方块可以作为底座) +# ============================================================ +# 这些方块放在锅下面,锅就能工作 + +HEAT_SOURCES = { + # 原版方块 + "minecraft:campfire": { + "name": "营火", + "heat_level": 1, # 热度等级(1=普通) + "supports": [ # 能支撑哪些厨具 + "炒锅", "煎锅", "油锅", "汤锅", "蒸笼" + ], + }, + "minecraft:soul_campfire": { + "name": "灵魂营火", + "heat_level": 2, # 热度等级(2=较强) + "supports": [ + "炒锅", "煎锅", "油锅", "汤锅", "蒸笼" + ], + }, + "minecraft:magma": { + "name": "岩浆块", + "heat_level": 1, + "supports": [ + "油锅", "汤锅" + ], + }, + + # 模组工具方块(激活后可以发热) + "rtdd:barbecuegrill_1": { + "name": "烧烤炉(点火)", + "heat_level": 2, + "supports": [ + "炒锅", "煎锅", "油锅", "汤锅", "蒸笼" + ], + }, + "rtdd:oven": { + "name": "烤炉", + "heat_level": 3, # 最高热度 + "supports": [ + "炒锅", "煎锅", "油锅", "汤锅", "蒸笼", "烤制" + ], + }, +} + +# ============================================================ +# 三、工具状态切换链(完整的状态流转) +# ============================================================ +# 格式:工具名 -> 状态列表(从初始到结束) + +TOOL_STATE_CHAINS = { + "炒锅": { + "chain": ["rtdd:wok", "rtdd:oilpan", "rtdd:wok"], + "description": "空炒锅 -> 上油(煎锅) -> 做完菜 -> 空炒锅", + }, + "油锅": { + "chain": ["rtdd:oilpot_0", "rtdd:oilpot_1", "rtdd:oilpot_0"], + "description": "空油锅 -> 倒油 -> 炸食材 -> 空油锅", + }, + "汤锅": { + "chain": ["rtdd:potsimmering_0", "rtdd:potsimmeringwater", "rtdd:potsimmering_0"], + "description": "空汤锅 -> 加水 -> 炖食材 -> 空汤锅", + }, + "蒸笼": { + "chain": ["rtdd:steamer", "rtdd:steamer", "rtdd:steamer"], + "description": "蒸笼 -> 盖盖 -> 蒸食材 -> 蒸笼(状态不变,通过标记控制)", + }, + "烧烤炉": { + "chain": ["rtdd:barbecuegrill_0", "rtdd:barbecuegrill_1", "rtdd:barbecuegrill_0"], + "description": "烧烤炉 -> 点火 -> 烤食材 -> 烧烤炉", + }, + "榨汁机": { + "chain": ["rtdd:juicer_0", "rtdd:juicer_1", "rtdd:juicer_2", + "rtdd:juicer_3", "rtdd:juicer_4", "rtdd:juicer_0"], + "description": "空榨汁机 -> 放水果 -> 摇1 -> 摇2 -> 摇3 -> 取果汁 -> 空榨汁机", + }, + "丸子机": { + "chain": ["rtdd:meatballmaker_0", "rtdd:meatballmaker_1", "rtdd:meatballmaker_2", + "rtdd:meatballmaker_3", "rtdd:meatballmaker_4", "rtdd:meatballmaker_5", + "rtdd:meatballmaker_0"], + "description": "空丸子机 -> 放碎肉 -> 摇1 -> 摇2 -> 摇3 -> 摇4 -> 取肉丸 -> 空丸子机", + }, + "酒桶": { + "chain": ["rtdd:wine_barrel", "b_81", "b_238", "rtdd:wine_barrel"], + "description": "酒桶 -> 放原料 -> 发酵 -> 取酒 -> 酒桶", + }, +} + +# ============================================================ +# 四、工具分类(快速查询) +# ============================================================ + +# 需要火源的厨具(必须放在发热底座上) +NEED_FIRE_TOOLS = [k for k, v in TOOL_CONFIG.items() if v.get("need_fire")] + +# 手工工具(不需要底座,放哪里都能用) +MANUAL_TOOLS = [k for k, v in TOOL_CONFIG.items() if not v.get("need_fire") and not v.get("is_heat_source")] + +# 发热源工具(激活后可以作为底座) +HEAT_SOURCE_TOOLS = [k for k, v in TOOL_CONFIG.items() if v.get("is_heat_source")] + +# 所有合法底座方块(原版+模组) +ALL_BASE_BLOCKS = list(HEAT_SOURCES.keys()) \ No newline at end of file