寿司 功能实现 3

This commit is contained in:
wenhe committed 2026-09-09 16:47:13 +08:00
1 parent d13a3600f1
commit 8a93a4825c
1 file changed
+20 -6
@@ -15,7 +15,9 @@
handleBlockUse ← 入口:分发器转发右键方块事件 handleBlockUse ← 入口:分发器转发右键方块事件
├─ _handleCut ← 手持菜刀右键卷寿司两次 -> 寿司块(三个) ├─ _handleCut ← 手持菜刀右键卷寿司两次 -> 寿司块(三个)
└─ handleSwitch ← 通用转换(基础组/加鱼/卷制/手握/寿司堆/递减) └─ handleSwitch ← 通用转换(基础组/加鱼/卷制/手握/寿司堆/递减)
handleItemUseOn ← 入口:手持饭团右键方块表面 -> 放置 手握普通寿司 handleItemUseOn ← 入口:
1) 手持寿司方块物品右键自家寿司方块 -> 取消默认放置(交给 handleBlockUse)
2) 手持饭团右键方块表面 -> 放置 手握普通寿司
(通用工具) getCarriedItem / consumeItem / dropItem / replaceBlock / (通用工具) getCarriedItem / consumeItem / dropItem / replaceBlock /
checkCooldown checkCooldown
================================================================================ ================================================================================
@@ -132,6 +134,12 @@ class ShousiService(BlueFoxServerSystem):
self.featureBlocks.add(NORI_1) self.featureBlocks.add(NORI_1)
self.featureBlocks.add(NIGIRI_BASE) self.featureBlocks.add(NIGIRI_BASE)
# ---- 寿司方块物品集合(所有 featureBlocks 方块都有物品形态) ----
# 手持它们右键"自家寿司方块"时取消默认放置, 统一交给方块右键逻辑,
# 否则引擎会先把手持的寿司方块"放置"到旁边, 消耗掉手持物品
# (表现为"堆叠没消耗")并在旁边多出一个方块。
self.sushiBlockItems = set(self.featureBlocks)
# ---- 切块计数 {(dim,x,y,z): n} ---- # ---- 切块计数 {(dim,x,y,z): n} ----
self.cutCounter = {} self.cutCounter = {}
@@ -150,8 +158,14 @@ class ShousiService(BlueFoxServerSystem):
return self.featureBlocks return self.featureBlocks
def getItemUseOnRules(self): def getItemUseOnRules(self):
"""手持饭团右键方块表面路由(放置手握普通寿司)""" """手持物品右键方块表面路由:
return {RICE_BALL: True} - 全部寿司方块物品(卷寿司/手握/寿司堆等): 右键自家寿司方块时取消默认放置
- 饭团: 右键任意非寿司方块表面 -> 放置 手握普通寿司"""
rules = {}
for b in self.sushiBlockItems:
rules[b] = True
rules[RICE_BALL] = True
return rules
def handleBlockUse(self, args): def handleBlockUse(self, args):
"""由 FeatureDispatcher 转发的右键方块入口""" """由 FeatureDispatcher 转发的右键方块入口"""
@@ -255,9 +269,9 @@ class ShousiService(BlueFoxServerSystem):
# 替换方块 # 替换方块
if recipe.get("target"): if recipe.get("target"):
self.replaceBlock(pos, dim, recipe["target"], playerId) self.replaceBlock(pos, dim, recipe["target"], playerId)
# 给背包物品(递减取走) # 递减取走: 以掉落物形式返还卷寿司
if recipe.get("give"): if recipe.get("drop"):
self.giveItem(playerId, recipe["give"]) self.dropItem(dim, pos, recipe["drop"])
# 提示 # 提示
if recipe.get("tip"): if recipe.get("tip"):
comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["tip"]) comp.CreateMsg(playerId).NotifyOneMessage(playerId, recipe["tip"])