右键 改3

This commit is contained in:
wenhe committed 2026-09-22 11:50:30 +08:00
1 parent 45d328b339
commit 0dc9bec3bc
4 files changed
+24 -46

No files matched your search

@@ -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")
@@ -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",
}
ITEM_USE_ON_CANCEL_BY_ITEM = PLACE_ITEMS | EAT_ITEMS