ceshi 2 bug处理ok

This commit is contained in:
wenhe committed 2026-09-23 16:58:44 +08:00
1 parent b768ff1555
commit faa3a22631
8 files changed
+314 -52

No files matched your search

+51
View File
@@ -1028,3 +1028,54 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
OnItemUseOn 的 BY_ITEM / ITEM_USE_ON_CANCEL / SUSHI / COATING 分支全部改为 ret+显式事件
③白名单清单: 新增"十三、其余 itemUseOn 转换 统一显式事件修复" [已实现]
########################################
【统一消闪修复·第二轮】(2026-09-23)
########################################
用户批量反馈后的统一修复, 分根因A/B/C/D四块:
【根因A】操作后任意位置放置被吞(全模组, 最严重)
- 症状: 日志 [FD-BlockUse-DONE]hand:NONE吃roastedmushrooms_3 设 _cancelItemUse=True 后,
玩家之后在任意位置放方块都被 [FD-ItemUseOn-CONSUME-CANCEL] 吞掉。
- 根因: _cancelItemUse 是无时限的玩家级布尔标记, OnBlockUse 设 True 后残留;
空手右键(吃/取)只触发 BlockUse 不触发 ItemUseOn, 标记无人消费残留到下一次真实放置。
- 修复: FeatureDispatcher.py 加 CANCEL_WINDOW=0.5, _cancelItemUse 改存时间戳,
OnBlockUse/OnItemUseOn(itemUseOn成功)/OnItemTryUse 三处消费处均判断 time.time()-ts<0.5,
过期残留 pop 后直接放行, 不再吞后续放置/吃。 [已实现]
【根因D】面食计时改2秒+去秒提示+移除右键启动(参照烤乳猪自动判定)
- MianshiData.TIMER_RULES 全部 time:60->2 (发酵/蒸笼/烤炉烘焙 共13条)
- MianshiService: 移除"烤炉固定 OVEN_FIX_BLOCKS 右键 startTimerFor+提示"、"空手右键蒸笼计时源
timerSources 启动"两段; 改由 MianshiTimerService autoStart tick 按下方烤炉/点燃炉灶自动启动
- 提示去秒数: startTimerTips/timingTips 去掉"还需%d秒", 蒸笼入笼 tip 去掉"(共60秒)", 只报开始蒸制
【根因C】家具家私获得物品改掉落物形式
- FurnitureService: 箭盒取箭 giveItem->_dropItemDict; 厨具架取回 giveItemObj/giveItem->_dropItemObj/
_dropItemDict; 通用 recipe giveItem(水槽取水/取脏盘子/盘子架取回)->_dropItemDict。 [已实现]
【根因B】手持可放置/可投掷物品右键功能方块"想转换却被放置/投掷"
- 症状: 持鸡蛋右键鸡窝扔蛋/放不进; 持胡萝卜右键饲料槽摆切萝卜; 烧烤上杆/死亡生物挂肉钩/
厨具丸子机/石磨/炉灶/面食加水/寿司 等闪一下或真放出去。
- 根因: 这些转换走 ServerBlockUseEvent(handleBlockUse), 但手持物是真块/可投掷, 客户端
ClientItemUseOnEvent 未拦(手持物,功能方块), 原版先播放放置/投掷预览; 且部分物品(鸡/鳕/
鲑/胡萝卜/稻谷)在 PLACE_ITEMS 里, 客户端拦截后走 ItemUseOnRequest 相邻放置, 绕开 owners 检查。
- 修复: 新增 BlockUseRequest 统一显式事件通道(与盛出同架构):
①InterceptData: 新增 BLOCKUSE_CANCEL, 扫描 ANIMAL_SWITCHES/BARBECUE_SWITCHES/DEADMOB_SWITCHES/
STOVE_RULES/MEATBALLMAKER_RULES/STEAMER_RULES/Mianshi SWITCH_RULES 中 item非空且非* 的
(手持物品,source/block) 对
②FeatureDispatcher: 新增 BLOCK_USE_REQUEST 常量/监听/路由 OnBlockUseRequest(按 blockOwnerAll
handleBlockUse)
③ClientFeatureDispatcher: 新增 BLOCK_USE_REQUEST 常量, OnItemUseOn 中 BLOCKUSE_CANCEL 分支
优先于 ITEM_USE_ON_CANCEL_BY_ITEM(避免相邻放置抢走), ret+Notify 显式触发 [已实现]
【注意事项】
- 烧烤上杆烤鸡规则 item=rtdd:roastchickenplace_0(放置后的块), 不是 minecraft:chicken;
若玩家想"手持生鸡肉右键支杆", 该组合不属于转换(需先放出生鸡肉块), 待用户确认是否要改数据。
- 面食/汤锅/装盘(ITEM_USE_ON_CANCEL_BY_ITEM) 仍走 ItemUseOnRequest; 他们不属于 blockUse 转换。
- 炒锅放料补充: 用户反馈"炒锅放胡萝卜"同款问题。已把 ChaoguoData.SWITCH_RULES 纳入 BLOCKUSE_CANCEL
派生(InterceptData), 且派生时跳过 action==take_out(避免与 TAKEOUT_CANCEL 抢盘子出锅)。这样手持
胡萝卜/葱花/蒜末等食材右键炒锅(油锅/添油) 会走 BlockUseRequest, 不再被相邻放置抢走。 [已补]
- 汤锅/油锅放料补充: 用户要求把炒锅/汤锅/油锅"手持食材放置"全部处理, 不只是胡萝卜。
已将 TangguoData.SWITCH_RULES、YouguoData.SWITCH_RULES 一并纳入 BLOCKUSE_CANCEL 派生
(同样过滤 action==take_out)。汤锅/油锅/炒锅放料(手持食材/锅态汤右键锅身) 现在都走
BlockUseRequest, 不再被相邻放置/放置物品抢走。 [已补]
- 投掷物(鸡蛋等)扔蛋修复: 扔蛋是独立投掷事件 ClientItemTryUseEvent 触发(非 ItemUseOn放置)。
方案(用户指定): 右键鸡窝放蛋时客户端记玩家级 _blockCdPlayer[pId]=now(0.2s 短标记);
OnItemTryUse 中该玩家 0.2s 内手持 BlockUse 可投掷/可用物品(BLOCKUSE_CANCEL_ITEMS)直接
cancel 掉投掷动画; 窗口过后放行, 对地扔蛋正常。不设全局取消(会破坏对地投掷, 已弃)。
时长 0.2s, 不卡翻炒(0.3s 间隔)。 [已修]