Files
rtdd/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/ceshi/ToolData.py
T
2026-07-24 15:44:44 +08:00

257 lines
9.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- 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())