右键 改5
This commit is contained in:
1 parent
61f54b581d
commit
0f83720cb8
2 files changed
+27
-102
No files matched your search
+10
-1
@@ -241,9 +241,18 @@ class FeatureDispatcher(BlueFoxServerSystem):
|
||||
取消"使用物品于方块"的字段是 ret(不是 cancel),官方要求双端设置才能
|
||||
真正取消默认行为。本分发器已在服务端设 ret=True。
|
||||
"""
|
||||
playerId = args.get("playerId") or args.get("entityId")
|
||||
# 【关键】同一右键动作会同时触发 ServerBlockUseEvent(盛出/转换, 已由 OnBlockUse
|
||||
# 处理并设置 _cancelItemUse) 和 ServerItemUseOnEvent(手持方块物品的放置前摇)。
|
||||
# 若前一帧 OnBlockUse 已成功处理(盛出掉落/方块转换), 这里必须消费标记并
|
||||
# ret=True 取消放置, 否则"盛出了成品"却又"把手持的木碗/盘子放了出来"。
|
||||
# (与 OnItemTryUse 消费标记取消"吃/喝"是同一模式。)
|
||||
if self._cancelItemUse.pop(playerId, False):
|
||||
args['ret'] = True
|
||||
return
|
||||
|
||||
itemName = args.get("itemName")
|
||||
services = self.itemUseOnAll.get(itemName)
|
||||
playerId = args.get("playerId") or args.get("entityId")
|
||||
# 被点方块(用于去重: 该方块归哪些右键服务管辖)
|
||||
clickedName = None
|
||||
try:
|
||||
|
||||
+17
-101
@@ -30,18 +30,23 @@
|
||||
"""
|
||||
|
||||
# ============================================================================
|
||||
# 一、导入各功能分类的规则数据符号(纯常量, 无服务端 API 依赖, 客户端可安全 import)
|
||||
# 逐个 try, 任一失败只跳过该模块, 不影响整体。
|
||||
# 一、导入各功能分类"手持物品右键方块表面"的规则数据符号
|
||||
# 只扫【ITEM_USE_ON_RULES】(surface 字段) —— 这些才走 ServerItemUseOnEvent
|
||||
# -> handleItemUseOn, 是客户端 ClientItemUseOnEvent 应拦截的组合。
|
||||
# 注意: 绝对不要扫 SWITCH_RULES / *_SWITCHES 等(本体现在, 走 ServerBlockUseEvent
|
||||
# -> handleBlockUse), 若扫进来客户端拦截会吃掉整个右键, 导致"右键什么都不发生"。
|
||||
# 注: 本项目无 __init__.py, 用与各 Service 相同的 `from ..XxxData import ...`
|
||||
# 直接导入符号, 而非 import 模块对象。
|
||||
# ============================================================================
|
||||
|
||||
# 每个条目: (规则表内容) —— 规则表可能是 list[dict] 或单个 dict(RICE_PLANT)
|
||||
# 每个条目: (规则表内容) —— 规则表 list[dict], 字段含 "item" + "surface"/"source"
|
||||
_ALL_RULE_TABLES = []
|
||||
|
||||
|
||||
def _collect_all():
|
||||
"""遍历 _ALL_RULE_TABLES, 汇总全部 (item, block) 转换对。"""
|
||||
"""遍历 _ALL_RULE_TABLES, 汇总全部 (手持item, 被点surface方块) 组合。
|
||||
只取 "surface"(手持物品右键方块表面) 与 "source"(盘子转换的被点方块),
|
||||
不取 "block"(本体现在右键, 由服务端 handleBlockUse 处理)。"""
|
||||
pairs = set()
|
||||
for value in _ALL_RULE_TABLES:
|
||||
for rule in _as_list(value):
|
||||
@@ -52,73 +57,35 @@ def _collect_all():
|
||||
continue
|
||||
if item.startswith("*"):
|
||||
continue
|
||||
for blkf in ("block", "source", "surface"):
|
||||
for blkf in ("surface", "source"):
|
||||
blk = rule.get(blkf)
|
||||
if isinstance(blk, basestring) and blk:
|
||||
pairs.add((item, blk))
|
||||
return pairs
|
||||
|
||||
|
||||
# ---- 面食.甜食: 和面/饺子/包子/馍/煎饼卷 + 手持生食右键蒸笼/烤炉/木碗 ----
|
||||
# ---- 面食.甜食: 手持生食/面饼/面粉 右键 烤炉/木碗/蒸笼 (itemUseOn) ----
|
||||
try:
|
||||
from ..mianshi.MianshiData import (
|
||||
SWITCH_RULES as MIANSHI_SWITCH,
|
||||
ITEM_USE_ON_RULES as MIANSHI_USON,
|
||||
)
|
||||
_ALL_RULE_TABLES.append(MIANSHI_SWITCH)
|
||||
from ..mianshi.MianshiData import ITEM_USE_ON_RULES as MIANSHI_USON
|
||||
_ALL_RULE_TABLES.append(MIANSHI_USON)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 炒锅: 盖饭双向 + 蛋炒饭 ----
|
||||
# ---- 炒锅: 盖饭双向 + 蛋炒饭 (itemUseOn, surface=米饭/成品菜) ----
|
||||
try:
|
||||
from ..chaoguo.ChaoguoData import (
|
||||
SWITCH_RULES as CHAOGUO_SWITCH,
|
||||
ITEM_USE_ON_RULES as CHAOGUO_USON,
|
||||
)
|
||||
_ALL_RULE_TABLES.append(CHAOGUO_SWITCH)
|
||||
from ..chaoguo.ChaoguoData import ITEM_USE_ON_RULES as CHAOGUO_USON
|
||||
_ALL_RULE_TABLES.append(CHAOGUO_USON)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 汤锅: 放入食材/出锅 + 手持锅态汤右键熟面条 ----
|
||||
# ---- 汤锅: 手持锅态汤右键 熟面条 (itemUseOn) ----
|
||||
try:
|
||||
from ..tangguo.TangguoData import (
|
||||
SWITCH_RULES as TANGGUO_SWITCH,
|
||||
ITEM_USE_ON_RULES as TANGGUO_USON,
|
||||
)
|
||||
_ALL_RULE_TABLES.append(TANGGUO_SWITCH)
|
||||
from ..tangguo.TangguoData import ITEM_USE_ON_RULES as TANGGUO_USON
|
||||
_ALL_RULE_TABLES.append(TANGGUO_USON)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 油锅: 倒油/放料/出锅 ----
|
||||
try:
|
||||
from ..youguo.YouguoData import SWITCH_RULES as YOUGUO_SWITCH
|
||||
_ALL_RULE_TABLES.append(YOUGUO_SWITCH)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 厨具: 炉灶加木条/丸子机加料取料/蒸笼 ----
|
||||
try:
|
||||
from ..chuju.ChujuData import (
|
||||
STOVE_RULES, MEATBALLMAKER_RULES, STEAMER_RULES,
|
||||
)
|
||||
_ALL_RULE_TABLES.append(STOVE_RULES)
|
||||
_ALL_RULE_TABLES.append(MEATBALLMAKER_RULES)
|
||||
_ALL_RULE_TABLES.append(STEAMER_RULES)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 食材: 裹粉(COATING 无 floor 字段, 手工补) / 肉馅按压 ----
|
||||
try:
|
||||
from ..shicai.ShicaiData import COATING_RULES, MEAT_PRESS_RULES
|
||||
_ALL_RULE_TABLES.append(COATING_RULES)
|
||||
_ALL_RULE_TABLES.append(MEAT_PRESS_RULES)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 原版放置/盘子转换 ----
|
||||
# ---- 原版放置/盘子转换 (itemUseOn, surface=相邻放置 / source=盘子) ----
|
||||
try:
|
||||
from ..yuanbanfangzhi.YuanbanData import (
|
||||
ITEM_USE_ON_RULES as YUANBAN_USON,
|
||||
@@ -129,57 +96,6 @@ try:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 乡野自然: 柴火堆叠 + 水稻种植 ----
|
||||
try:
|
||||
from ..ziran.NaturalData import FIREWOOD_RULES, NATURAL_SWITCHES, RICE_PLANT
|
||||
_ALL_RULE_TABLES.append(FIREWOOD_RULES)
|
||||
_ALL_RULE_TABLES.append(NATURAL_SWITCHES)
|
||||
_ALL_RULE_TABLES.append(RICE_PLANT)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 家具家私: 水槽放脏盘/盘子架放盘/碗柜放碗/火炉等 ----
|
||||
try:
|
||||
from ..jiaju.FurnitureData import (
|
||||
ARROWBARREL_RULES, FLUME_RULES, TRAYRACKS_RULES, CUPBOARD_RULES,
|
||||
BOOKCASE_RULES, POTIONRACK_RULES, RECORDPLAYER_RULES,
|
||||
TRASHBIN_RULES, FIREPLACE_RULES,
|
||||
)
|
||||
for _t in (ARROWBARREL_RULES, FLUME_RULES, TRAYRACKS_RULES,
|
||||
CUPBOARD_RULES, BOOKCASE_RULES, POTIONRACK_RULES,
|
||||
RECORDPLAYER_RULES, TRASHBIN_RULES, FIREPLACE_RULES):
|
||||
_ALL_RULE_TABLES.append(_t)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 死亡生物: 挂肉钩挂死牛/死猪/死羊 + 菜刀切配 ----
|
||||
try:
|
||||
from ..siwangshengwu.DeadmobData import DEADMOB_SWITCHES
|
||||
_ALL_RULE_TABLES.append(DEADMOB_SWITCHES)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 烧烤: 支杆上杆(手持生肉/死猪右键支杆) ----
|
||||
try:
|
||||
from ..shaokao.BarbecueData import BARBECUE_SWITCHES
|
||||
_ALL_RULE_TABLES.append(BARBECUE_SWITCHES)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 市场贸易: 手持果蔬放入售卖箱/鱼桶 ----
|
||||
try:
|
||||
from ..shichangmaoyi.MarketData import MARKET_SWITCHES
|
||||
_ALL_RULE_TABLES.append(MARKET_SWITCHES)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ---- 动物养殖: 放蛋/喂食(手持原版鸡蛋/种子/胡萝卜等) ----
|
||||
try:
|
||||
from ..dongwuyangzhi.AnimalData import ANIMAL_SWITCHES
|
||||
_ALL_RULE_TABLES.append(ANIMAL_SWITCHES)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# 二、从规则表派生 (手持方块物品, 被点功能方块) 转换对
|
||||
|
||||
Reference in new issue
Block a user