右键 改3
This commit is contained in:
1 parent
45d328b339
commit
0dc9bec3bc
4 files changed
+24
-46
No files matched your search
+7
-19
@@ -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")
|
||||
|
||||
+7
-27
@@ -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
|
||||
@@ -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 有"手持
|
||||
成品菜/米饭右键炒锅中间态方块→取消放置"的服务端兜底, 因要使客户端白名单宁少勿多
|
||||
(避免误拦正常放置), 该边缘防误触仍只服务端处理(功能正确, 仅轻微闪烁), 暂不搬客户端 [已复查]
|
||||
|
||||
@@ -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组
|
||||
|
||||
|
||||
========================================
|
||||
|
||||
Reference in new issue
Block a user