diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/ClientFeatureDispatcher.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/ClientFeatureDispatcher.py index cf2f751..78bbc24 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/ClientFeatureDispatcher.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/ClientFeatureDispatcher.py @@ -9,9 +9,11 @@ 客户端先 cancel/ret, 再由服务端精确处理转换。 【监听事件】(全模组客户端唯一拦截点) - 1. ClientBlockUseEvent 右键功能方块 -> cancel=True - 2. ClientItemUseOnEvent 手持白名单物品右键方块表面 -> ret=True - 3. ClientItemTryUseEvent 手持直接吃物品(饭团/水煮蛋/豆腐) -> cancel=True + 1. ClientItemUseOnEvent 手持白名单物品右键方块表面 -> ret=True + 2. ClientItemTryUseEvent 手持直接吃物品(饭团/水煮蛋/豆腐) -> cancel=True + 【注意】不拦 ClientBlockUseEvent(右键功能方块本体): 那会误拦"对炉灶放置 + 蒸笼/对空锅放置盘子"等合理放置。右键方块本体的转换由服务端 OnBlockUse + 精确路由处理, 不在客户端提前 cancel。 【白名单来源】 共享数据 InterceptData.py (客户端/服务端同一份, 见其注释) @@ -24,7 +26,7 @@ clientComp = clientApi.GetEngineCompFactory() from ...BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxClientSystem from .InterceptData import (ITEM_USE_ON_CANCEL, ITEM_USE_ON_CANCEL_BY_ITEM, - BLOCK_USE_CANCEL, SUSHI_BLOCKS, COATING_ITEMS) + SUSHI_BLOCKS, COATING_ITEMS) class ClientFeatureDispatcher(BlueFoxClientSystem): @@ -33,9 +35,6 @@ class ClientFeatureDispatcher(BlueFoxClientSystem): def __init__(self, namespace, systemName): BlueFoxClientSystem.__init__(self, namespace, systemName) print "===== ClientFeatureDispatcher init =====" - self.ListenForEvent(clientApi.GetEngineNamespace(), - clientApi.GetEngineSystemName(), - "ClientBlockUseEvent", self, self.OnBlockUse) self.ListenForEvent(clientApi.GetEngineNamespace(), clientApi.GetEngineSystemName(), "ClientItemUseOnEvent", self, self.OnItemUseOn) @@ -45,9 +44,6 @@ class ClientFeatureDispatcher(BlueFoxClientSystem): def Destroy(self): print "===== ClientFeatureDispatcher Destroy =====" - self.UnListenForEvent(clientApi.GetEngineNamespace(), - clientApi.GetEngineSystemName(), - "ClientBlockUseEvent", self, self.OnBlockUse) self.UnListenForEvent(clientApi.GetEngineNamespace(), clientApi.GetEngineSystemName(), "ClientItemUseOnEvent", self, self.OnItemUseOn) @@ -56,15 +52,7 @@ class ClientFeatureDispatcher(BlueFoxClientSystem): "ClientItemTryUseEvent", self, self.OnItemTryUse) # ============================================================================ - # 入口1: 右键功能方块 -> 提前 cancel 默认交互 - # ============================================================================ - def OnBlockUse(self, args): - blockName = args.get("blockName") - if blockName in BLOCK_USE_CANCEL: - args["cancel"] = True - - # ============================================================================ - # 入口2: 手持物品右键方块表面 -> 白名单组合才 ret + # 入口1: 手持物品右键方块表面 -> 白名单组合才 ret (取消默认放置/吃) # ============================================================================ def OnItemUseOn(self, args): blockName = args.get("blockName") diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py index 5959f34..ab5ea41 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py @@ -83,6 +83,10 @@ CHAOGUO_CANCEL = { ("rtdd:bowlofrice", "rtdd:plate_15"), ("rtdd:bowlofrice_2", "rtdd:plate_15"), ("rtdd:bowlofrice_3", "rtdd:plate_15"), + # 蛋炒饭: 手持米饭(三形态任一) 右键 炒锅_86(蛋炒饭_加胡萝卜_熟) -> 炒锅_87(加米饭_熟) + ("rtdd:bowlofrice", "rtdd:riceegg_2"), + ("rtdd:bowlofrice_2", "rtdd:riceegg_2"), + ("rtdd:bowlofrice_3", "rtdd:riceegg_2"), } # ---- 厨具 锅铲/带油锅铲 (Chuju) ---- @@ -135,7 +139,7 @@ ITEM_USE_ON_CANCEL = (PLATE_CANCEL | MIANSHI_CANCEL | TANGGUO_CANCEL # 二、纯手持物品取消: 只看手持item (右键任意方块表面/空中) # ============================================================================ -# ---- 原版相邻放置 (YuanbanService ITEM_USE_ON_RULES) ---- +# ---- 原版相邻放置 (YuanbanService ITEM_USE_ON_RULES) + 水稻种植 (Natural RICE_PLANT) ---- PLACE_ITEMS = { "minecraft:chicken", "minecraft:salmon", @@ -145,6 +149,7 @@ PLACE_ITEMS = { "minecraft:potato", "rtdd:qingcai", "rtdd:scallions", + "rtdd:rice_seeds", # 稻谷: 右键耕地相邻放置水稻苗(RICE_PLANT) } # ---- 总食用 手持直接吃 (Shiyongfood TRY_USE_RULES) ---- @@ -154,29 +159,4 @@ EAT_ITEMS = { "rtdd:beancurd", # 豆腐 } -ITEM_USE_ON_CANCEL_BY_ITEM = PLACE_ITEMS | EAT_ITEMS - -# ============================================================================ -# 三、右键功能方块集合 (ClientBlockUseEvent 提前 cancel) -# 右键这些功能方块, 无论空手/手持, 客户端都提前取消"默认交互", -# 由服务端 OnBlockUse 精确路由处理(不误伤放置)。 -# 注意: 仅列出"交互型"功能方块(灶台/蒸笼/炒锅/汤锅/锅具/柴火/水箱等), -# 不放被右键时应当正常放置的方块。 -# ============================================================================ -BLOCK_USE_CANCEL = { - "rtdd:stove", "rtdd:stove_1", "rtdd:stove_2", - "rtdd:steamer", "rtdd:steamercover", - "rtdd:wok", "rtdd:coverthepan", "rtdd:oilpan", - "rtdd:stewedsoup", "rtdd:stewedsoupwater", "rtdd:coverthepot", - "rtdd:oilpot_0", "rtdd:oilpot_1", - "rtdd:oilcan", - "rtdd:manger_0", "rtdd:manger_1", "rtdd:manger_2", "rtdd:manger_3", - "rtdd:pigmanger_1", "rtdd:pigmanger_2", - "rtdd:chickenmanger_0", "rtdd:chickenmanger_1", - "rtdd:firewood", "rtdd:firewood_2", - "rtdd:stonemill", - "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", -} \ No newline at end of file +ITEM_USE_ON_CANCEL_BY_ITEM = PLACE_ITEMS | EAT_ITEMS \ No newline at end of file diff --git a/tuilun/全部功能做了什么.txt b/tuilun/全部功能做了什么.txt index d941c58..1bb9bbb 100644 --- a/tuilun/全部功能做了什么.txt +++ b/tuilun/全部功能做了什么.txt @@ -971,4 +971,12 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher) ClientBlockUseEvent(cancel功能方块)/ ClientItemUseOnEvent(ret白名单组合)/ ClientItemTryUseEvent(cancel手持吃物品), 客户端提前拦截消除"闪一下" ④modMain.py 客户端分支导入 ClientFeatureDispatcher, 由 BlueFox 框架自动注册 [已实现] +- 复查补漏(2026-09-22): 白名单核对全部17服务 getItemUseOnRules + handleItemUseOn 后补: + ①水稻种植 rtdd:rice_seeds 加入相邻放置 PLACE_ITEMS(Natural RICE_PLANT 漏) + ②蛋炒饭 米饭三形态 x rtdd:riceegg_2 补 3 组进 CHAOGUO_CANCEL + 核对确认已覆盖无遗漏: 装盘PLATE_CANCEL9项/面食MIANSHI_CANCEL6项/汤锅TANGGUO_CANCEL + 3项/盖饭CHAOGUO_CANCEL 24+3项/锅铲CHUJU_CANCEL3项/寿司SUSHI_CANCEL/裹粉COATING_ + CANCEL/原版放置PLACE_ITEMS/手持吃EAT_ITEMS。注意: Chaoguo.handleItemUseOn 有"手持 + 成品菜/米饭右键炒锅中间态方块→取消放置"的服务端兜底, 因要使客户端白名单宁少勿多 + (避免误拦正常放置), 该边缘防误触仍只服务端处理(功能正确, 仅轻微闪烁), 暂不搬客户端 [已复查] diff --git a/tuilun/右键拦截白名单清单.txt b/tuilun/右键拦截白名单清单.txt index ae02197..485edbe 100644 --- a/tuilun/右键拦截白名单清单.txt +++ b/tuilun/右键拦截白名单清单.txt @@ -93,6 +93,8 @@ 反向(手持米饭 bowlofrice/2/3 -> 右键上述成品菜方块): - 米饭三形态 右键 辣子鸡丁plate_47/香菇滑鸡plate_54/麻婆豆腐plate_32/胡萝卜炒鳕鱼plate_15 被点方块原地变对应盖饭 +蛋炒饭(手持米饭三形态 右键 炒锅_86 riceegg_2 -> 炒锅_87 riceegg_3): +- bowlofrice/2/3 x riceegg_2 = 3组 ========================================