炒菜工具数据库

This commit is contained in:
wenhe committed 2026-07-23 16:20:34 +08:00
1 parent 42c118dfd3
commit cd9abda48b
2 files changed
+273 -1

No files matched your search

@@ -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)
@@ -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())