Files
2026-09-29 16:25:50 +08:00

150 lines
8.4 KiB
Python

# -*- coding: utf-8 -*-
"""
================================================================================
厨具(xy_kitchenware)转化规则数据
================================================================================
统一管理"厨具"(xy_kitchenware) 分类下的转化规则常量。只被
ChujuService / ChujuTimerService 读取,FeatureDispatcher 通过方块名/物品名
集合路由到对应服务。
【本次实现的六大功能】
1) 炉灶 (stove + 木条 -> 加木条 -> 打火石/烈焰弹 -> 点燃) 纯右键
2) 丸子机 (面团 -> 鱿鱼须 -> 任意配料 -> 计时半熟 -> 计时熟 -> 盘子取) 右键+计时
3) 搅拌器 (肉/牛奶/蛋 分别搅打; 牛奶+蛋互通; 蛋+木碗=奶油; +盘子=蛋液) 纯右键
4) 石磨 (黄豆 -> 研磨旋转4次 -> 玻璃罐装油罐) 右键+计数
5) 蒸笼 (盖盖/掀盖 双向) 纯右键
6) 锅铲蘸油/上油 (锅铲<->带油锅铲 附魔光效; 油罐方块次数16用完变玻璃罐;
带油锅铲右键炒锅 -> 炒锅(添油)) 手持物品互换
【留后】(到具体菜品/分类时再实现, 本模块不处理)
- 盘子 plate_0 -> 脏盘子 plate_0a
- 油罐直接上油空炒锅 (18a)
- 蒸笼蒸熟 (13)
- 锅铲翻炒/锅勺翻煮/菜刀切割/擀面杖擀面 具体用法 (21~24)
【计时说明】
丸子机 _3(加料完成) -> 30秒 -> _4(半熟) -> 30秒 -> _5(熟) 为两段连续计时,
autoStart=True: 方块变成计时源时会自动写入开始时间戳并启动。
计时方块需配置 netease:block_entity tick:true (meatballmaker_3/4 已改)。
================================================================================
"""
# ============================================================================
# 一、炉灶 (stove 空 -> stove_1 加木条 -> stove_2 点燃)
# ============================================================================
STOVE_RULES = [
{"source": "rtdd:stove", "item": "rtdd:b_15",
"target": "rtdd:stove_1", "consume": 4, "tip": None},
{"source": "rtdd:stove_1", "item": "minecraft:flint_and_steel",
"target": "rtdd:stove_2", "tip": None},
{"source": "rtdd:stove_1", "item": "minecraft:fire_charge",
"target": "rtdd:stove_2", "consume": 1, "tip": None},
]
# ============================================================================
# 二、丸子机 (meatballmaker_0 空 ~ _5 熟, 章鱼小丸子)
# _0+面团 -> _1 -> +鱿鱼须 -> _2 -> +任意配料 -> _3 -> 计时 -> _4 半熟
# -> 计时 -> _5 熟 -> +盘子 -> 章鱼小丸子(plate_40), 还原空
# ============================================================================
MEATBALLMAKER_RULES = [
{"source": "rtdd:meatballmaker_0", "item": "rtdd:dough_0",
"target": "rtdd:meatballmaker_1", "consume": 1, "tip": None},
{"source": "rtdd:meatballmaker_1", "item": "rtdd:rawsquidwhiskersr",
"target": "rtdd:meatballmaker_2", "consume": 4, "tip": None},
{"source": "rtdd:meatballmaker_2", "item": "*any",
"target": "rtdd:meatballmaker_3", "consume": 1,
"below": ["rtdd:stove_2"], "tip": None},
{"source": "rtdd:meatballmaker_5", "item": "rtdd:plate_0",
"target": "rtdd:meatballmaker_0", "consume": 1,
"dropItem": [{"name": "rtdd:plate_40", "count": 1}],
"tip": None},
]
# 丸子机计时: _3(加料完成) -> 30s -> _4(半熟) -> 30s -> _5(熟)
MEATBALL_TIMERS = [
{"source": "rtdd:meatballmaker_3", "target": "rtdd:meatballmaker_4",
"time": 30, "autoStart": True, "below": ["rtdd:stove_2"]},
{"source": "rtdd:meatballmaker_4", "target": "rtdd:meatballmaker_5",
"time": 30, "autoStart": True, "below": ["rtdd:stove_2"]},
]
# ============================================================================
# 三、搅拌器 (beater 空)
# 肉: beater -> beatermeat_0 -> beatermeat_1 -> 空手取肉馅(记住放的是猪/牛)
# 奶: beater -> beatermike_0/1/2 (每次1个牛奶桶, 返还空桶)
# 蛋: beater -> beater_custard_0/1/2 (每次1个鸡蛋)
# 互通: 牛奶_3(beatermike_2)+蛋 -> 鸡蛋牛奶(beater_eggsandmilk_0)
# 蛋_3(beater_custard_2)+奶 -> 鸡蛋牛奶(beater_eggsandmilk_0)
# 鸡蛋牛奶: _0 -> 空手搅打 -> _1 -> 空手搅打 -> _2 -> +盘子 -> 蛋液半成品(plate_34)
# 奶油: 蛋_3(beater_custard_2)+木碗 -> 奶油(cream_0), 还原空
# ============================================================================
# 原版生肉 -> 对应肉馅方块(取出时按放入的肉决定)
MEAT_ITEMS = {
"minecraft:porkchop": "rtdd:rawmeatball_0", # 生猪排 -> 生猪肉馅
"minecraft:beef": "rtdd:rawmeatball_1", # 生牛肉 -> 生牛肉馅
}
MILK_ITEM = "minecraft:milk_bucket" # 牛奶桶
BUCKET_ITEM = "minecraft:bucket" # 空桶(牛奶桶用掉返还)
EGG_ITEM = "minecraft:egg" # 鸡蛋
BOWL_ITEM = "rtdd:bowlasoup" # 木碗(取奶油)
PLATE_ITEM = "rtdd:plate_0" # 盘子(取蛋液半成品)
CREAM_ITEM = "rtdd:cream_0" # 奶油(蛋完成态+木碗取出)
EGG_CUSTARD_ITEM = "rtdd:plate_34" # 蛋液半成品(归面食.甜食/面团·胚料)
# 搅拌器全部方块态
BEATER_BLOCKS = [
"rtdd:beater",
"rtdd:beatermeat_0", "rtdd:beatermeat_1",
"rtdd:beatermike_0", "rtdd:beatermike_1", "rtdd:beatermike_2",
"rtdd:beater_custard_0", "rtdd:beater_custard_1", "rtdd:beater_custard_2",
"rtdd:beater_eggsandmilk_0", "rtdd:beater_eggsandmilk_1", "rtdd:beater_eggsandmilk_2",
]
# ============================================================================
# 四、石磨 (stonemill 空)
# + 黄豆(16个) -> 加入黄豆 -> 空手右键研磨(每次旋转90度) -> 4次完成
# -> + 玻璃罐 -> 油罐(oilcan), 还原空
# 研磨进度存方块实体数据 rtdd_mill (0=已放豆, 1~3=旋转中, 4=完成)
# ============================================================================
SOYBEAN_ITEM = "rtdd:soybean" # 黄豆
SOYBEAN_COUNT = 16 # 磨一次要16个黄豆
WHEAT_ITEM = "minecraft:wheat" # 小麦(磨面原料)
WHEAT_COUNT = 6 # 磨一次要6个小麦
FLOUR_ITEM = "rtdd:farineblcok" # 面粉(石磨产物, 方块物品)
STONEMILL_GRIND_COUNT = 4 # 右键4次完成研磨
GLASS_TANK_ITEM = "rtdd:medicinetank" # 玻璃罐(取出油罐)
OIL_CAN_ITEM = "rtdd:oilcan" # 油罐(石磨产物)
# 石磨材料标识(存方块实体 rtdd_stm): 'soybean'=黄豆, 'wheat'=小麦
STONEMILL_MATERIAL_KEY = "rtdd_stm"
# 石磨·客户端消闪拦截(BlockUse): 手持 玻璃罐/黄豆/小麦 右键石磨, 提前取消"放置预览",
# 再显式通知服务端(见 InterceptData.BLOCKUSE_CANCEL / ClientFeatureDispatcher)。
# 实际行为仍由服务端 handleStonemill 决定(加料研磨 / 玻璃罐取油罐 / 空手取面粉)。
STONEMILL_BLOCKUSE = [
{"item": GLASS_TANK_ITEM, "block": "rtdd:stonemill"}, # 玻璃罐取油罐
{"item": SOYBEAN_ITEM, "block": "rtdd:stonemill"}, # 加黄豆研磨
{"item": WHEAT_ITEM, "block": "rtdd:stonemill"}, # 加小麦研磨
]
# ============================================================================
# 四B、手持厨具物品(七、手持厨具物品): 锅铲 <-> 带油锅铲, 油罐蘸油/上油炒锅
# 19. 锅铲(spatula) 右键油罐(oilcan) -> 带油锅铲(spatula_oil, 附魔光效), 油罐次数-1
# 19a.带油锅铲 右键油罐 -> 变回锅铲, 油罐次数+1
# 20. 带油锅铲 右键炒锅(wok) -> 炒锅变炒锅(添油)(oilpan), 油铲变回锅铲
# 油罐方块初始次数16次, 用完变玻璃罐(rtdd:medicinetank); 次数存方块实体 rtdd_oc
# ============================================================================
SPATULA = "rtdd:spatula" # 锅铲(手持物品)
SPATULA_OIL = "rtdd:spatula_oil" # 带油锅铲(手持物品, 附魔光效)
WOK = "rtdd:wok" # 炒锅(方块)
OIL_PAN = "rtdd:oilpan" # 炒锅(添油)(方块)
OIL_CAN_USES = 16 # 油罐方块初始可用次数(用完变玻璃罐)
# ============================================================================
# 五、蒸笼 (steamer 空 <-> steamercover 加盖) 双向
# ============================================================================
STEAMER_RULES = [
{"source": "rtdd:steamer", "item": None,
"target": "rtdd:steamercover", "tip": None},
{"source": "rtdd:steamercover", "item": None,
"target": "rtdd:steamer", "tip": None},
]