加挂钩 右键食物调整
This commit is contained in:
1 parent
140e179e2b
commit
7232a6e082
14 files changed
+116
-56
No files matched your search
+11
-9
@@ -229,18 +229,20 @@ class ClientFeatureDispatcher(BlueFoxClientSystem):
|
||||
itemName = itemDict.get("newItemName") or itemDict.get("itemName")
|
||||
except Exception:
|
||||
itemName = None
|
||||
_pId = args.get("playerId") or args.get("entityId")
|
||||
|
||||
# 优先: 玩家刚做过 BlockUse 转换(0.2s 内, 如炒锅/汤锅/油锅放料、鸡蛋放鸡窝、上杆),
|
||||
# 引擎重置右键会立即再触发一次"吃/投掷/倒水"。此窗口内若手持该转换涉及的可食用/可用
|
||||
# 物品(BLOCKUSE_CANCEL_ITEMS), 直接 cancel 掉默认吃/投掷, 避免"放料却吃了食物"。
|
||||
# 玩家级标记(pId)而非坐标——TryUse 事件无目标方块坐标, 只有玩家。0.2s 极短且仅在
|
||||
# 刚做完方块转换后生效, 不会影响玩家正常吃/对地面扔蛋。
|
||||
_pc = self._blockCdPlayer.get(_pId, 0)
|
||||
if _pc and (time.time() - _pc) < 0.2 and itemName in BLOCKUSE_CANCEL_ITEMS:
|
||||
args["cancel"] = True
|
||||
return
|
||||
# 饭团/水煮蛋/豆腐 在 ITEM_USE_ON_CANCEL_BY_ITEM 里(EAT_ITEMS)
|
||||
if itemName in ITEM_USE_ON_CANCEL_BY_ITEM:
|
||||
args["cancel"] = True
|
||||
# 投掷/使用抑制: 玩家刚做过 BlockUse 转换(0.2s 内, 如放蛋/放料), 引擎重置右键会立即
|
||||
# 再触发一次"投掷/使用"动画(鸡蛋右键鸡窝放蛋 -> 扔蛋)。此窗口内若手持 BlockUse 可投掷/
|
||||
# 可用物品, 直接 cancel 掉投掷; 窗口过后放行(对地扔蛋正常)。
|
||||
# 注意: 玩家级标记(pId)而非坐标——投掷事件无目标方块坐标, 只有玩家。0.2s 极短且仅在
|
||||
# 刚做完方块转换后生效, 不会影响玩家正常对地面/空中扔蛋。
|
||||
_pId = args.get("playerId") or args.get("entityId")
|
||||
_pc = self._blockCdPlayer.get(_pId, 0)
|
||||
if _pc and (time.time() - _pc) < 0.2 and itemName in BLOCKUSE_CANCEL_ITEMS:
|
||||
args["cancel"] = True
|
||||
|
||||
# 注: 客户端系统需在客户端进程被实例化。modMain 只能在服务端 import 服务端
|
||||
# 系统; 客户端系统由 BlueFox 框架自动注册其子类。为确保本类被加载, 需在
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
================================================================================
|
||||
"""
|
||||
import time
|
||||
import random
|
||||
|
||||
import mod.server.extraServerApi as serverApi
|
||||
|
||||
# ---- 网易API基础对象 ----
|
||||
|
||||
+6
-4
@@ -296,11 +296,13 @@ for _tbl in _BLOCK_USE_TABLES:
|
||||
if isinstance(_bk, basestring) and _bk:
|
||||
BLOCKUSE_CANCEL.add((_it, _bk))
|
||||
|
||||
# BlockUse 转换涉及的全部手持物品集合(客户端 OnItemTryUse 也需取消默认"使用/投掷/倒水",
|
||||
# 否则手持鸡蛋右键鸡窝会被当成投掷扔出去; 水桶倒水同理)。
|
||||
# 只取原版/可"使用"的物品(minecraft: 前缀)进入 TryUse 取消; rtdd 方块物品不触发 TryUse。
|
||||
# BlockUse 转换涉及的全部手持物品集合(客户端 OnItemTryUse 也需取消默认"吃/使用/投掷/倒水",
|
||||
# 否则手持 原版生肉/鱼/蛋 或 可食用的 rtdd 食材(brownrice/beancurd/crab/ham/beef_tenderloin
|
||||
# 等) 右键炒锅/汤锅/油锅放料时, 会被原版当"吃"前摇吞掉食材)。
|
||||
# 不限制前缀: 只要出现在放料/转换组合里都纳入, 取消仅在"放料后 0.2s 窗口"内生效,
|
||||
# 工具类(锅铲/盘子/支杆)不触发 TryUse 吃, 加宽无副作用, 能覆盖全部可食 rtdd 食材。
|
||||
BLOCKUSE_CANCEL_ITEMS = set(
|
||||
_it for (_it, _bk) in BLOCKUSE_CANCEL if _it.startswith("minecraft:")
|
||||
_it for (_it, _bk) in BLOCKUSE_CANCEL
|
||||
)
|
||||
|
||||
# ---- Chuju 锅铲/油罐 inline 转换(在 ChujuService.handleItemUseOn 内联, 不在数据表) ----
|
||||
|
||||
+5
@@ -76,6 +76,11 @@ class NaturalService(BlueFoxServerSystem):
|
||||
"""返回本功能管辖的所有右键方块名集合(右键路由用)"""
|
||||
return self.featureBlocks
|
||||
|
||||
def getItemUseOnRules(self):
|
||||
"""返回"手持物品右键方块表面"的规则。稻谷种植已改用物品 JSON 的
|
||||
minecraft:seed 组件原生处理, 故返回空(但接口必须实现, dispatch 器会调用)。"""
|
||||
return {}
|
||||
|
||||
def handleBlockUse(self, args):
|
||||
"""由 FeatureDispatcher 转发的右键方块入口(柴火/葡萄收获/水稻收获)"""
|
||||
blockName = args.get("blockName")
|
||||
|
||||
Reference in new issue
Block a user