烧烤烤串,冷却,放置误触,目前创造物品栏所有的碰撞箱修改1
This commit is contained in:
1 parent
c70ab9bcf7
commit
23c64953a2
98 files changed
+945
-914
No files matched your search
+24
@@ -128,6 +128,14 @@ class FeatureDispatcher(BlueFoxServerSystem):
|
||||
tryUseSet = set()
|
||||
grassDropOwners = [] # 破坏"草/杂草"时概率掉食材(如黄豆)的服务列表; OnDestroy 逐个尝试
|
||||
|
||||
# ---- 位置级"防误吃"窗口: (dim, x, y, z) -> 到期时间戳 ----
|
||||
# 转换服务刚把方块换成"可吃成品"(如翻烤出炉的熟串)后, 给该位置加一小段禁吃时间。
|
||||
# 原因: 翻烤(BarbecueService)与吃(ShiyongfoodService)是两种服务、两张独立冷却表,
|
||||
# 而输入都是"空手右键同一位置"; 快速连点时翻烤出锅后的下一次点击会直接进吃逻辑,
|
||||
# 把刚烤好的串立刻吃掉。窗口内空手右键不执行吃(见 ShiyongfoodService.handleBlockUse)。
|
||||
eatLock = {}
|
||||
EAT_LOCK_SECONDS = 1.0
|
||||
|
||||
# ---- 拆方块掉落映射: 方块名 → 掉落对应的原版生食材 ----
|
||||
# 玩家左键破坏这些"放置的半成品/死鱼"方块时, 取消默认掉落, 改为掉对应的原版生食材
|
||||
DESTROY_DROP = {
|
||||
@@ -206,6 +214,22 @@ class FeatureDispatcher(BlueFoxServerSystem):
|
||||
return False
|
||||
return service.startTimer(dim, pos, blockName, playerId)
|
||||
|
||||
@classmethod
|
||||
def lockEat(cls, pos, dim, seconds=None):
|
||||
"""
|
||||
转换服务调用:给"刚转换出来的方块位置"加一个防误吃窗口。
|
||||
窗口内空手右键该位置不会执行"吃"(见 ShiyongfoodService.handleBlockUse),
|
||||
避免快速连点把刚出锅的可吃成品(如熟串)立刻吃掉。
|
||||
"""
|
||||
if seconds is None:
|
||||
seconds = cls.EAT_LOCK_SECONDS
|
||||
cls.eatLock[(dim, pos[0], pos[1], pos[2])] = time.time() + seconds
|
||||
|
||||
@classmethod
|
||||
def isEatLocked(cls, pos, dim):
|
||||
"""查询该位置的"防误吃"窗口是否仍在生效(过期自动视为未锁定)"""
|
||||
return time.time() < cls.eatLock.get((dim, pos[0], pos[1], pos[2]), 0)
|
||||
|
||||
def __init__(self, namespace, systemName):
|
||||
"""
|
||||
初始化:注册事件监听(全模组唯一监听点)。
|
||||
|
||||
+3
@@ -146,6 +146,9 @@ class BarbecueService(BlueFoxServerSystem):
|
||||
|
||||
# 切换型规则:就地执行
|
||||
self.handleSwitch(recipe, playerId, pos, dim, itemDict, key)
|
||||
# 防误吃: 本次转换刚换掉的方块位置, 短时间内禁止"空手右键吃"。
|
||||
# 否则快速连点时, 翻烤出的可吃成品(熟串)会被紧接着的下一次点击立刻吃掉。
|
||||
FeatureDispatcher.lockEat(pos, dim)
|
||||
return True
|
||||
|
||||
# ============================================================================
|
||||
|
||||
+5
@@ -25,6 +25,7 @@ comp = serverApi.GetEngineCompFactory() # 组件工厂
|
||||
|
||||
from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem
|
||||
from ..ShiyongfoodData import EAT_RULE_MAP, TRY_USE_RULES
|
||||
from ...service.FeatureDispatcher import FeatureDispatcher
|
||||
|
||||
# ---- 吃的声音 random.eat(任务三) ----
|
||||
from ....ModUtil.ServerUtil import PlaySoundToAllClient
|
||||
@@ -79,6 +80,10 @@ class ShiyongfoodService(BlueFoxServerSystem):
|
||||
rule = EAT_RULE_MAP.get(blockName)
|
||||
if not rule:
|
||||
return False
|
||||
# 防误吃窗口: 该位置刚被转换服务换成"可吃成品"(如翻烤出的熟串), 短时间内不执行吃,
|
||||
# 避免快速连点把刚出锅的成品立刻吃掉; 窗口过后正常一次点击即可吃。
|
||||
if FeatureDispatcher.isEatLocked(pos, dim):
|
||||
return True
|
||||
if not self.checkCooldown(key, 0.4):
|
||||
return True
|
||||
|
||||
|
||||
Reference in new issue
Block a user