diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py index dd56e04..50b640d 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/service/InterceptData.py @@ -180,6 +180,17 @@ try: except Exception: pass +# 饮料·冰棍盒/炒冰盒 整条"放料"链(放冰 + 放水果): YinliaoData.LOLLY_FRYICE_BLOCKUSE。 +# 冰块是可放置方块物品 -> 原版先播"放置"前摇(闪一下); +# 水果多为可食用(苹果/西瓜片/葡萄/桃子/橙子) -> 原版当"吃"吞掉(一边吃一边放)。 +# 两处均为内联转换, 故需在此罗列组合 -> 纳入 BLOCKUSE_CANCEL, 客户端提前 ret 并走 +# BlockUseRequest 到 YinliaoService.handleBlockUse(放冰/放水果换态)。 +try: + from ..yinliao.YinliaoData import LOLLY_FRYICE_BLOCKUSE as YINLIAO_LOLLY_BLOCKUSE + _BLOCK_USE_TABLES.append(YINLIAO_LOLLY_BLOCKUSE) +except Exception: + pass + # ---- 乡野自然(种葡萄: 手持葡萄右键支杆): NaturalData.GRAPE_PLANT ---- # 葡萄是食物(eat 动画), 右键支杆会被原版当"吃/使用"前摇, 需纳入 BLOCKUse 取消消闪, # 机制与烧烤上杆(cod/salmon 同为食物右键支杆)完全一致。 diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/yinliao/YinliaoData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/yinliao/YinliaoData.py index b942e05..fe067de 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/yinliao/YinliaoData.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/yinliao/YinliaoData.py @@ -136,3 +136,26 @@ FRYICE_FRUITS = { # 炒冰盒方块 → (水果物品名, 冰沙方块, 口味名) 反向表(取冰沙用) FRYICE_BOX_INFO = {v[0]: (k, v[1], v[2]) for k, v in FRYICE_FRUITS.items()} + +# ============================================================================ +# 冰棍盒/炒冰盒·客户端消闪拦截(BlockUse) +# 这两套"放料"链是内联转换(见 YinliaoService._handleLollyBox / _handleFryIceBox), +# 不在 Data 规则表 -> 在此罗列组合, 注册进 InterceptData._BLOCK_USE_TABLES 后自动 +# 进入 BLOCKUSE_CANCEL, 由客户端提前 ret + BlockUseRequest 消闪并禁止原版默认行为。 +# 为什么必须先拦: +# 冰块是可放置方块物品 -> 原版先播"放置"前摇(闪一下); +# 水果多为可食用(苹果/西瓜片/rtdd 葡萄/桃子/橙子) -> 原版当"吃"吞掉(一边吃一边放)。 +# 组合: +# 放冰: 各冰块 × icelollybox_1(冰棍盒未定型) / frytheicebox(炒冰盒空) +# 放水果: POPSICLE_FRUITS 各水果 × icelollybox_2(冰棍盒定型) +# FRYICE_FRUITS 各水果 × frytheicebox_1(炒冰盒已放冰) +# 实际行为仍由服务端 handleBlockUse 决定(消耗1冰/放水果换态)。 +# ============================================================================ +LOLLY_FRYICE_BLOCKUSE = [] +for _ice in ICE_ITEMS: + LOLLY_FRYICE_BLOCKUSE.append({"item": _ice, "block": ICE_LOLLY_FREEZE["source"]}) + LOLLY_FRYICE_BLOCKUSE.append({"item": _ice, "block": "rtdd:frytheicebox"}) +for _fr in POPSICLE_FRUITS: + LOLLY_FRYICE_BLOCKUSE.append({"item": _fr, "block": ICE_LOLLY_FREEZE["target"]}) +for _fr in FRYICE_FRUITS: + LOLLY_FRYICE_BLOCKUSE.append({"item": _fr, "block": "rtdd:frytheicebox_1"}) diff --git a/tuilun/右键拦截白名单清单.txt b/tuilun/右键拦截白名单清单.txt index f01caba..d60b3bd 100644 --- a/tuilun/右键拦截白名单清单.txt +++ b/tuilun/右键拦截白名单清单.txt @@ -214,4 +214,23 @@ ServerItemUseOnEvent 重复触发也会被冷却拦截, 不双重消耗。 派生: 各 _BLOCK_USE_TABLES 中 item=="*any" 且【无 below 前置条件】的规则的 source 方块。 - 垃圾桶三态: rtdd:storage_buckets(关) / rtdd:rubbish_bin_2(打开,掉垃圾清空主手) / rtdd:b_160(有垃圾) 【排除】带 below 的"任意物品"规则(如丸子机 meatballmaker_2 需下方有炉灶)不纳入: -客户端无法判断 below 条件, 无条件拦会吞掉条件不满足时玩家正常的吃/放置。 \ No newline at end of file +客户端无法判断 below 条件, 无条件拦会吞掉条件不满足时玩家正常的吃/放置。 + + +======================================== +十五、冰棍盒/炒冰盒 整条"放料"链消闪 (YinliaoData.LOLLY_FRYICE_BLOCKUSE, 2026-09-30) +======================================== +问题: 冰棍盒/炒冰盒的"放冰→放水果→取成品"链是内联实现(YinliaoService +_handleLollyBox / _handleFryIceBox), 不在 Data 规则表 -> 未进 BLOCKUSE_CANCEL: +- 放冰步: 冰块是【可放置方块物品】-> 原版先播"放置"前摇 -> 闪一下; +- 放水果步: 水果多为【可食用】(苹果/西瓜片 原版, 葡萄/桃子/橙子 rtdd) + -> 原版当"吃"吞掉 -> 手持原版物品会吃、手持葡萄也会吃。 +方案: YinliaoData.LOLLY_FRYICE_BLOCKUSE 罗列整条链组合, 注册进 +InterceptData._BLOCK_USE_TABLES 后自动进入 BLOCKUSE_CANCEL, 客户端提前 ret + +BlockUseRequest 消闪并禁止默认 吃/放置, 服务端 handleBlockUse 照常换态。 +- 放冰: 各冰块(minecraft:ice / packed_ice / blue_ice / frosted_ice) + × rtdd:icelollybox_1(冰棍盒未定型) 与 rtdd:frytheicebox(炒冰盒空) +- 放水果: POPSICLE_FRUITS 各水果 × rtdd:icelollybox_2(冰棍盒定型) + FRYICE_FRUITS 各水果 × rtdd:frytheicebox_1(炒冰盒已放冰) +【未含】各水果盒/冰沙盒的"空手右键取成品"(item=None) —— 空手不涉及放置/ +吃, 无需拦截, 仍走正常 ServerBlockUseEvent。 \ No newline at end of file