# -*- 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": [ # 下面必须放这些方块之一 "rtdd:cookstoves", # 灶台(基础款,有火) "rtdd:stove_2", # 灶台(高级款,有火) "minecraft:campfire", # 原版营火 ], "target": "rtdd:oilpan", # 激活后变成煎锅 "need_fire": True, # 需要火源 "is_heat_source": False, # 不是发热源 }, # ==================== 煎锅 ==================== "rtdd:oilpan": { "name": "煎锅", "activate_item": "rtdd:spatula_oil", # 用带油锅铲激活 "check_oil": True, "base_blocks": [ "rtdd:cookstoves", "rtdd:stove_2", "minecraft:campfire", ], "target": "rtdd:oilpan", # 激活后不变(只是上油标记) "need_fire": True, "is_heat_source": False, }, # ==================== 油锅 ==================== "rtdd:oilpot_0": { "name": "油锅", "activate_item": "rtdd:oilcan", # 用油罐直接激活 "check_oil": False, # 不需要检查物品含油 "base_blocks": [ "rtdd:cookstoves", "rtdd:stove_2", "minecraft:campfire", ], "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": [ "rtdd:cookstoves", "rtdd:stove_2", "minecraft:campfire", ], "target": "rtdd:potsimmeringwater", # 激活后变成加了水的架锅 "need_fire": True, "is_heat_source": False, }, # ==================== 蒸笼 ==================== "rtdd:steamer": { "name": "蒸笼", "activate_item": "rtdd:steamercover", # 用蒸笼盖盖盖 "check_oil": False, "base_blocks": [ "rtdd:cookstoves", "rtdd:stove_2", "minecraft:campfire", ], "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 = { # 模组自定义灶台 "rtdd:cookstoves": { "name": "灶台(基础款)", "heat_level": 1, "supports": [ "炒锅", "煎锅", "油锅", "架锅", "蒸笼" ], }, "rtdd:stove_2": { "name": "灶台(高级款·有火)", "heat_level": 1, "supports": [ "炒锅", "煎锅", "油锅", "架锅", "蒸笼" ], }, # 原版底座 "minecraft:campfire": { "name": "营火", "heat_level": 1, "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())