This commit is contained in:
wenhe committed 2026-09-23 14:27:13 +08:00
1 parent 9eb9edbb8a
commit b768ff1555
10 files changed
+618 -15

No files matched your search

+61 -1
View File
@@ -137,4 +137,64 @@
取消key: 手持item (ClientItemTryUseEvent cancel)
- rtdd:rice_balls(饭团) -> 直接吃
- rtdd:boiled_egg(水煮蛋) -> 直接吃
- rtdd:beancurd(豆腐) -> 直接吃
- rtdd:beancurd(豆腐) -> 直接吃
========================================
十一、盛出/出锅消闪 (InterceptData.TAKEOUT_CANCEL, 2026-09-23)
========================================
右键场景: 手持 木碗/盘子 右键 成品方块(汤锅成品/炒锅熟盘装/油锅熟炸物) -> 盛出/出锅。
问题: 手持可放置方块物品右键, 客户端先渲染一帧"放置前摇/幽灵方块",
服务端取消指令往返后才撤掉 -> "闪一下"(服务端顺序正确, 碗/盘从未真落, 见日志 FD-Placed-AFTER=air)。
方案: 客户端对该组合 ClientItemUseOnEvent ret=True(取消放置预览, 消闪)
+ NotifyToServer('TakeoutRequest') 显式通知服务端执行盛出(纠正"客户端拦截吞服务端盛出")。
取消key: (手持item, 被点block), 由 汤锅/炒锅/油锅 SWITCH_RULES 里 action=="take_out"
且 item 是容器(木碗bowlasoup / 盘子plate_0) 的规则自动派生。
- 汤锅: 木碗(bowlasoup)/盘子(plate_0) + 各成品汤方块(30条, 含 美味饺子全份盘装plate_30a)
- 炒锅: 盘子(plate_0) + 各炒锅熟成品(38条, 含蛋炒饭 riceegg_3)
- 油锅: 盘子(plate_0) + 6条熟炸物方块
特殊:
- 空手取出(item=None, 捏饭团/取水煮蛋/煎饼/馍出锅)、菜刀(item=CLEAVER)不走此路, 照旧 ServerBlockUseEvent。
- 服务端在 FeatureDispatcher.OnTakeoutRequest -> 各 Service.handleTakeoutRequest,
校验落点仍是成品方块才执行(防客户端事件与服务端事件双份)。
========================================
十二、盖饭/蛋炒饭 消闪 (InterceptData.GAI_FAN_CANCEL, 2026-09-23)
========================================
右键场景: 手持 成品菜 右键 米饭(盖饭正向) / 手持 米饭 右键 成品菜(盖饭反向) /
手持 米饭 右键 炒锅蛋炒饭(蛋炒饭改造)。
问题: 这些组合走 ServerItemUseOnEvent, 但也被 ITEM_USE_ON_CANCEL 纯 ret=True 吞掉,
导致服务端 ServerItemUseOnEvent 不触发 -> 盖饭"点无反应"(与盛出被吞同机制)。
方案: 客户端对该组合 ret=True(消闪) + NotifyToServer('GaifanRequest') 显式触发
-> FeatureDispatcher.OnGaifanRequest -> ChaoguoService.handleItemUseOn。
取消key: (手持item, 被点block), 由 ChaoguoData.ITEM_USE_ON_RULES 的 surface 字段自动派生
(盖饭正向/反向 + 蛋炒饭改造, 共若干组)。
【通用】客户端 1.5 秒放置冷却(_afterCd): 盛出/盖饭/出锅后, 同一坐标短时间内引擎
再触发的"放置"直接 ret 吞掉, 消除"转换后多放置一次"的闪烁 (2026-09-23)。
========================================
十三、其余 itemUseOn 转换 统一显式事件修复 (InterceptData / FeatureDispatcher, 2026-09-23)
========================================
问题: 与盖饭同款 —— 客户端对"走 handleItemUseOn 的 itemUseOn 转换"纯 ret=True 时,
会吞掉服务端 ServerItemUseOnEvent, 导致一端(面食/汤锅/装盘/相邻放置/厨具蘸油/寿司/
裹粉/种水稻)转换"点无反应"。
方案: 客户端对所有这些组合改为 ret=True(消闪) + NotifyToServer('ItemUseOnRequest')
显式触发; 服务端新增 FeatureDispatcher.OnItemUseOnRequest, 复用按 itemName 路由到
itemUseOnAll 各服务 handleItemUseOn(与 OnGaifanRequest 同机制), 逐个 fallback。
去重: 各服务 handleItemUseOn 自带 checkCooldown(同坐标/同物品), 即使与真实
ServerItemUseOnEvent 重复触发也会被冷却拦截, 不双重消耗。
- 一、原版相邻放置(手持原版生食右键任意表面 -> 相邻格放切配块/生肉) [已统一]
- 二、盘子装盘(手持原版食物右键 plate_0 -> 盘子变换) [已统一]
- 三、面食.甜食 手持转换(右键 烤炉/木碗/蒸笼) [已统一]
- 四、汤锅 手持转换(右键 熟面条碗 -> 汤面) [已统一]
- 六、乡野食材 裹粉(手持生食材右键 面粉块) [已统一]
- 七、厨具 锅铲/带油锅铲(右键 油罐/炒锅) [已统一]
- 八、乡野自然 水稻种植(手持稻谷右键地面) [已统一]
- 九、寿司 手持方块物品右键自家寿司方块(取消默认放置) [已统一]
- 十、总食用 手持直接吃(饭团/水煮蛋/豆腐, 右键表面吃) [已统一]
【注意】"相邻放置/装盘"分支(ITEM_USE_ON_CANCEL_BY_ITEM)因被点【表面坐标】不变,
不设 _afterCd(避免误吞同一表面 1.5s 内连续放置), 去重交给服务端 handleItemUseOn 冷却。
"盖饭/蛋炒饭"(GAI_FAN_CANCEL)、"盛出/出锅"(TAKEOUT_CANCEL) 仍用各自专用事件, 不变。