From 25b023b703e56aca70e061b3970309729813524a Mon Sep 17 00:00:00 2001 From: wenhe <1046926120@qq.com> Date: Mon, 14 Sep 2026 17:10:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B1=A4=E9=94=85=E5=8A=9F=E8=83=BD=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mianshi/service/MianshiService.py | 2 +- .../xiangyemod/tangguo/TangguoData.py | 36 +++++++++++++------ .../tangguo/service/TangguoService.py | 35 ++++++++++++++++-- tuilun/全部功能做了什么.txt | 10 ++++-- tuilun/汤锅转化关系.txt | 28 ++++++++------- 5 files changed, 82 insertions(+), 29 deletions(-) diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/mianshi/service/MianshiService.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/mianshi/service/MianshiService.py index 1bd78fd..dfe4cc7 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/mianshi/service/MianshiService.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/mianshi/service/MianshiService.py @@ -35,7 +35,7 @@ from ....BlueFoxTools.ToolsConfig import LevelId # ---- 只导入面食自己的数据库 ---- from ..MianshiData import ( - CLEAVER, ROLLINGPIN, BOWL, OVEN, STEAMER, + CLEAVER, ROLLINGPIN, BOWL, PLATE, OVEN, STEAMER, MEAT_ITEMS, FILLING_ITEMS, RICH_MEAT_ITEMS, SWITCH_RULES, KNEAD_COUNTERS, ITEM_USE_ON_RULES, TIMER_RULES, OVEN_FIX_BLOCKS, OVEN_RESULT_BLOCKS, NAME_MAP, diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/tangguo/TangguoData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/tangguo/TangguoData.py index daf24b2..8990bd0 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/tangguo/TangguoData.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/tangguo/TangguoData.py @@ -32,6 +32,7 @@ POT_LID = "rtdd:coverthepot" # 汤锅(盖锅) LIT_STOVE = "rtdd:stove_2" # 点燃的炉灶(厨具) BOWL = "rtdd:bowlasoup" # 木碗(厨具) CLEAVER = "rtdd:cleaver" # 菜刀(厨具) +PLATE = "rtdd:plate_0" # 盘子(厨具) WATER_BUCKET = "minecraft:water_bucket" # 水桶(原版) EMPTY_BUCKET = "minecraft:bucket" # 空桶(原版) @@ -61,6 +62,8 @@ BROWN_RICE = "rtdd:brownrice" # 大米(乡野食材) EGG_PILE = "rtdd:egg_pile" # 鸡蛋堆(乡野食材) SOYMILK = "rtdd:fruitjuice_7" # 豆浆(乡野饮料) SCALLIONS = "rtdd:crushed_scallions" # 葱花碎 +RICE_BALLS = "rtdd:rice_balls" # 饭团(乡野食物, 供寿司) +BOILED_EGG = "rtdd:boiled_egg" # 水煮蛋(乡野食物) # ============================================================================ # 二、汤底方块(不可计时, 供继续加料/组合) @@ -198,6 +201,7 @@ BOWL_VEGETABLE_FISH = "rtdd:brownvegetablefishsoup" # 蔬菜鱼片汤 BOWL_RICE_1 = "rtdd:bowlofrice" # 米饭_1(熟米饭_形态1) BOWL_RICE_2 = "rtdd:bowlofrice_2" # 米饭_2(形态2) BOWL_RICE_3 = "rtdd:bowlofrice_3" # 米饭_3(形态3) +PLATE_30A = "rtdd:plate_30a" # 美味饺子(全份)盘装 # ============================================================================ # 五、汤面方块(food_02_rice_noodle 分组) @@ -428,6 +432,10 @@ SWITCH_RULES = [ {"block": DUMPLINGS_SOUP_2, "item": BOWL, "action": "take_out", "target": POT_EMPTY, "dropItem": BOWL_DUMPLINGS, "consume": 1, "tip": "§a盛出 饺子_碗装, 锅变回 汤锅(空); 成品【吃】右键食用"}, + # 菜谱32 todo: 饺子汤_熟 + 盘子 -> 美味饺子(全份)盘装 + {"block": DUMPLINGS_SOUP_2, "item": PLATE, "action": "take_out", + "target": POT_EMPTY, "dropItem": PLATE_30A, "consume": 1, + "tip": "§a捞出 美味饺子(全份)盘装, 锅变回 汤锅(空); 成品【吃】右键食用"}, {"block": VEGETABLE_FISH_SOUP_3, "item": BOWL, "action": "take_out", "target": POT_EMPTY, "dropItem": BOWL_VEGETABLE_FISH, "consume": 1, "tip": "§a盛出 蔬菜鱼片汤, 锅变回 汤锅(空); 成品【吃】右键食用"}, @@ -481,18 +489,9 @@ SWITCH_RULES = [ {"block": BOWL_NOODLE, "item": BOWL_VEGETABLE_LAMB, "target": BRAISED_NOODLES, "consume": 1, "drop": BOWL, "tip": "§a蔬菜牛肉汤浇在面条上, 变成 胡萝卜蔬菜牛肉面, 掉落一个木碗; 汤面【吃】右键食用"}, - {"block": BOWL_NOODLE, "item": MUSHROOM_SOUP, "target": MUSHROOM_NOODLES, - "consume": 1, "drop": BOWL, - "tip": "§a蘑菇汤浇在面条上, 变成 香菇面, 掉落一个木碗; 汤面【吃】右键食用"}, {"block": BOWL_NOODLE, "item": BOWL_VEGETABLE_FISH, "target": YUSHENG_RAMEN, "consume": 1, "drop": BOWL, "tip": "§a蔬菜鱼片汤浇在面条上, 变成 蔬菜鱼片面, 掉落一个木碗; 汤面【吃】右键食用"}, - {"block": BOWL_NOODLE, "item": VEGETABLE_SOUP, "target": VEGETABLE_NOODLES, - "consume": 1, "drop": BOWL, - "tip": "§a蔬菜汤浇在面条上, 变成 蔬菜面, 掉落一个木碗; 汤面【吃】右键食用"}, - {"block": BOWL_NOODLE, "item": EGG_SOUP, "target": NOODLES_1, - "consume": 1, "drop": BOWL, - "tip": "§a蛋花汤浇在面条上, 变成 蛋花面, 掉落一个木碗; 可加葱花碎 或 直接【吃】"}, {"block": BOWL_NOODLE, "item": BOILED_EGG, "target": EGG_NOODLES, "consume": 1, "drop": BOWL, "tip": "§a放上水煮蛋, 变成 鸡蛋面, 掉落一个木碗; 汤面【吃】右键食用"}, @@ -505,7 +504,24 @@ SWITCH_RULES = [ ] # ============================================================================ -# 七、计时规则(供 TangguoTimerService) +# 七、手持物品右键方块表面规则(供 TangguoService handleItemUseOn) +# 锅态汤面走 itemUseOn 路径: 手持 锅态汤方块(蘑菇汤/蔬菜汤/蛋花汤) 右键 熟面条表面, +# 转换+取消放置在同一事件完成, 避免手持方块物品时引擎把"锅"放出来/掉出来 +# ============================================================================ +ITEM_USE_ON_RULES = [ + {"item": MUSHROOM_SOUP, "surface": BOWL_NOODLE, "target": MUSHROOM_NOODLES, + "consume": 1, "drop": BOWL, + "tip": "§a蘑菇汤浇在面条上, 变成 香菇面, 掉落一个木碗; 汤面【吃】右键食用"}, + {"item": VEGETABLE_SOUP, "surface": BOWL_NOODLE, "target": VEGETABLE_NOODLES, + "consume": 1, "drop": BOWL, + "tip": "§a蔬菜汤浇在面条上, 变成 蔬菜面, 掉落一个木碗; 汤面【吃】右键食用"}, + {"item": EGG_SOUP, "surface": BOWL_NOODLE, "target": NOODLES_1, + "consume": 1, "drop": BOWL, + "tip": "§a蛋花汤浇在面条上, 变成 蛋花面, 掉落一个木碗; 可加葱花碎 或 直接【吃】"}, +] + +# ============================================================================ +# 八、计时规则(供 TangguoTimerService) # below: 汤羹方块正下方须是 点燃的炉灶(stove_2) 才计时 # randomTargets: 生米锅到点后随机出其一形态 # ============================================================================ diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/tangguo/service/TangguoService.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/tangguo/service/TangguoService.py index 1cb0ae9..d5ec091 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/tangguo/service/TangguoService.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/tangguo/service/TangguoService.py @@ -33,7 +33,7 @@ from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem from ....BlueFoxTools.ToolsConfig import LevelId # ---- 只导入汤锅自己的数据库 ---- -from ..TangguoData import SWITCH_RULES +from ..TangguoData import SWITCH_RULES, ITEM_USE_ON_RULES # ---- 统一分发器 ---- from ...service.FeatureDispatcher import FeatureDispatcher @@ -55,6 +55,11 @@ class TangguoService(BlueFoxServerSystem): self.recipes[(r["block"], r.get("item"))] = r self.featureBlocks.add(r["block"]) + # ---- 手持锅态汤方块右键 熟面条表面 -> 规则: (物品, 表面方块) -> 规则 ---- + self.itemUseOnRecipes = {} + for r in ITEM_USE_ON_RULES: + self.itemUseOnRecipes[(r["item"], r["surface"])] = r + # ---- 右键冷却表 ---- self.cooldown = {} @@ -70,8 +75,9 @@ class TangguoService(BlueFoxServerSystem): return self.featureBlocks def getItemUseOnRules(self): - """手持物品右键方块表面不需要单独路由(所有转换都是右键方块本身), 返回空""" - return {} + """手持锅态汤方块(蘑菇汤/蔬菜汤/蛋花汤)右键 熟面条表面 走 itemUseOn 路径, + 在同一个事件里完成转换+取消放置, 防止引擎把"锅"放出来/掉出来""" + return {r["item"]: True for r in ITEM_USE_ON_RULES} def handleBlockUse(self, args): """由 FeatureDispatcher 转发的右键方块入口""" @@ -94,6 +100,29 @@ class TangguoService(BlueFoxServerSystem): self.handleSwitch(recipe, playerId, pos, dim, itemDict) return True + def handleItemUseOn(self, args): + """由 FeatureDispatcher 转发的"手持物品右键方块表面"入口(锅态汤面)。 + 手持 蘑菇汤/蔬菜汤/蛋花汤 右键 熟面条表面 -> 汤面, 转换与取消放置同一事件完成""" + itemName = args.get("itemName") + playerId = args.get("playerId") or args.get("entityId") + x, y, z = args.get("x"), args.get("y"), args.get("z") + pos = (x, y, z) + dim = comp.CreateDimension(playerId).GetEntityDimensionId() + key = (dim, x, y, z) + try: + b = comp.CreateBlockInfo(LevelId).GetBlockNew(pos, dim) + clickedName = b.get("name") if b else None + except Exception: + clickedName = None + recipe = self.itemUseOnRecipes.get((itemName, clickedName)) + if not recipe: + return False + if not self.checkCooldown(key, 0.4): + return True + itemDict = self.getCarriedItem(playerId) + self.handleSwitch(recipe, playerId, pos, dim, itemDict) + return True + # ============================================================================ # 二、通用转换执行 # ============================================================================ diff --git a/tuilun/全部功能做了什么.txt b/tuilun/全部功能做了什么.txt index cc5726e..e5629c7 100644 --- a/tuilun/全部功能做了什么.txt +++ b/tuilun/全部功能做了什么.txt @@ -705,7 +705,7 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher) - 胡萝卜汤+牛肉x2->胡萝卜牛肉汤 / +羊肉x2->胡萝卜羊肉汤 / +猪肋排x2->胡萝卜排骨汤 / +鳕鱼->胡萝卜鳕鱼汤 / +鲑鱼->胡萝卜鲑鱼汤 [已实现] - 蔬菜汤+羊肉x2->清汤羊肉 / +牛肉x2->蔬菜牛肉汤 / +碎肉x5->蔬菜瘦肉汤 / - +胡萝卜土豆汤x1->蔬菜乱炖(掉落1个汤锅(空)) / +生鱼片x10->蔬菜鱼片汤 [已实现] + +胡萝卜土豆汤x1->蔬菜乱炖 / +生鱼片x10->蔬菜鱼片汤 [已实现] - 胡萝卜土豆汤+青菜碎x3->蔬菜乱炖 / +牛肋x2->胡萝卜土豆牛骨汤 / +羊肉x2->土豆胡萝卜炖羊肉 / +羊小排x2->胡萝卜土豆羊排汤 [已实现] - 鳕鱼汤+鸡蛋x3 或 蛋花汤+鳕鱼->蛋花鳕鱼汤; 蛋花汤+碎肉x5 或 蔬菜瘦肉汤+鸡蛋x3->瘦肉蛋花汤; @@ -731,7 +731,8 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher) - 胡萝卜牛肉汤/胡萝卜羊肉汤/胡萝卜排骨汤/清汤羊肉/蔬菜牛肉汤/蔬菜瘦肉汤/蔬菜乱炖/ 胡萝卜土豆牛骨汤/土豆胡萝卜炖羊肉/胡萝卜土豆羊排汤/胡萝卜鳕鱼汤/胡萝卜鲑鱼汤/ 蛋花鳕鱼汤/瘦肉蛋花汤/豆腐鲑鱼汤/蘑菇炖鸡/猪蹄汤/羊肉泡馍汤/熟面条/饺子_碗装/ - 蔬菜鱼片汤/碗装米饭(米饭_1/2/3) [已实现] + 蔬菜鱼片汤/碗装米饭(米饭_1/2/3)/美味饺子(全份)盘装(plate_30a) [已实现] + (饺子汤_熟 除木碗盛 饺子_碗装 外, 手持盘子右键可捞出 美味饺子(全份)盘装) [已实现] - 全部成品 归 tangguo_finished, 均【吃】, 右键吃 后续由总食用功能实现 六、取出(锅变回 汤锅(空), 掉落物形式) @@ -740,7 +741,10 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher) - 煮豆腐(熟) + 菜刀右键(不消耗) -> 豆腐x16 [已实现] 七、汤面分组(food_02_rice_noodle) -- 手持汤锅成品菜 右键 熟面条(方块) -> 汤面, 消耗1成品菜, 掉落1木碗 [已实现] +- 手持汤锅成品菜 右键 熟面条(方块) -> 汤面, 消耗1成品菜, 掉落1个木碗 + (含 手持锅态汤(蛋花汤/蔬菜汤/蘑菇汤) 浇面, 同样掉落1个木碗) [已实现] +- 锅态汤面(香菇面/蔬菜面/蛋花面)走 itemUseOn 路径: 手持锅态汤方块右键熟面条表面, + 转换与取消放置在同一事件完成, 避免手持方块物品时引擎把"锅"放出来/掉出来 [已实现] - 猪排蔬菜面=胡萝卜排骨汤+熟面条 / 羊排蔬菜面=胡萝卜土豆羊排汤+熟面条 / 牛骨面=胡萝卜土豆牛骨汤+熟面条 / 小鸡炖蘑菇面=蘑菇炖鸡+熟面条 / 胡萝卜蔬菜面=蔬菜乱炖+熟面条 / 胡萝卜蔬菜牛肉面=蔬菜牛肉汤+熟面条 / diff --git a/tuilun/汤锅转化关系.txt b/tuilun/汤锅转化关系.txt index dedb7d1..b060903 100644 --- a/tuilun/汤锅转化关系.txt +++ b/tuilun/汤锅转化关系.txt @@ -201,7 +201,7 @@ 菜谱 18 — 蔬菜乱炖 ======================================== 转换1:蔬菜汤(rtdd:vegetablesoup) + 拿胡萝卜土豆汤右键, 消耗1个 - → 变身 蔬菜乱炖_生(rtdd:vegetablesstew) 掉落一个汤锅(空) + → 变身 蔬菜乱炖_生(rtdd:vegetablesstew) 转换2: 胡萝卜土豆汤+ 拿青菜碎右键, 消耗3个 → 变身 蔬菜乱炖_生(rtdd:vegetablesstew) 计时1:蔬菜乱炖_生(rtdd:vegetablesstew) 【计时】约60秒 @@ -502,6 +502,7 @@ todo 成品 右键吃 (吃的操作后续由总食用功能实现) ======================================== 机制: 熟面条(rtdd:noodle_soup) 由 菜谱31(生面汤) 煮出; 其余汤面 = 手持 汤锅成品菜 右键 熟面条(方块)【右键转换】, 消耗1个 掉落一个 木碗 + (含 手持锅态汤(蛋花汤/蔬菜汤/蘑菇汤) 浇面, 同样掉落1个木碗) (按名字成分对应, 均为汤锅的菜) - 猪排蔬菜面: noodlesoup_1 = 胡萝卜排骨汤 + 熟面条 (猪排骨+胡萝卜) - 羊排蔬菜面: noodlesoup_2 = 胡萝卜土豆羊排汤 + 熟面条 (羊排) @@ -522,9 +523,10 @@ todo 成品 右键吃 (吃的操作后续由总食用功能实现) ======================================== 九、成品菜清单(归 tangguo_finished, 均为【吃】) ======================================== -所有出锅产物 均以掉落物形式获得, 右键吃 后续由总食用功能实现: +所有出锅产物 均以掉落物形式获得, 右键吃 后续由总食用功能实现 +(对照 tangguo_groups.json 的 tangguo_finished 分组, 共26个): - 胡萝卜牛肉汤 (bowlacarrotbeefsoup) -- 胡萝卜羊肉汤 +- 胡萝卜羊肉汤 (brownlambsoupwithturnipssoup) - 胡萝卜排骨汤 (bowlacarrotribs) - 清汤羊肉 (bowlavegetablebeefsoup) - 蔬菜牛肉汤 (bowlavegetablelambsoup) @@ -534,18 +536,20 @@ todo 成品 右键吃 (吃的操作后续由总食用功能实现) - 土豆胡萝卜炖羊肉 (bowlalambstew) - 胡萝卜土豆羊排汤 (bowla_lambchopsoup) - 胡萝卜鳕鱼汤 (bowlacarrotcodsoup) -- 胡萝卜鲑鱼汤 +- 胡萝卜鲑鱼汤 (browncarrotfishsoupsoup) - 蛋花鳕鱼汤 (bowlaeggcodsoup) -- 瘦肉蛋花汤 +- 瘦肉蛋花汤 (brown_norieggsoup) - 豆腐鲑鱼汤 (bowlatufufish) - 蘑菇炖鸡 (bowlofmushroomsoup) -- 猪蹄汤 +- 猪蹄汤 (brownpigfootsoup) - 羊肉泡馍汤 (bowla_roujiamo) -- 熟面条 (noodle_soup) -- 饺子_碗装 / 美味饺子(全份)盘装 (plate_30) -- 蔬菜鱼片汤 -- 熟米饭_形态1/2/3 (ricepot_1/2/3) -- 碗装米饭 (bowlofrice) +- 蔬菜鱼片汤 (brownvegetablefishsoup) +- 饺子_碗装 (dumplingssoup) +- 美味饺子(半份)盘装 (plate_30) +- 美味饺子(全份)盘装 (plate_30a) [饺子汤_熟 + 盘子 捞出] +- 米饭_1(熟米饭_形态1) (bowlofrice) +- 米饭_2(熟米饭_形态2) (bowlofrice_2) +- 米饭_3(熟米饭_形态3) (bowlofrice_3) - 水煮蛋 (boiled_egg) -- 豆腐 (beancurd) +(熟面条 noodle_soup 归 food_02_rice_noodle 汤面分组; 豆腐 beancurd 归乡野食材, 见上文)