搬运了原版食材 死亡生物 手办 功能实现 小bug
This commit is contained in:
1 parent
6bd16734e8
commit
4f032234c0
23 files changed
+134
-119
No files matched your search
@@ -6,6 +6,9 @@ from xiangyemod.dongwuyangzhi.service.AnimalService import AnimalService
|
||||
from xiangyemod.dongwuyangzhi.service.AnimalTimerService import AnimalTimerService
|
||||
from xiangyemod.shaokao.service.BarbecueService import BarbecueService
|
||||
from xiangyemod.shaokao.service.BarbecueTimerService import BarbecueTimerService
|
||||
from xiangyemod.siwangshengwu.service.DeadmobService import DeadmobService
|
||||
from xiangyemod.siwangshengwu.service.DeadmobTimerService import DeadmobTimerService
|
||||
from xiangyemod.shouban.service.ShoubanService import ShoubanService
|
||||
|
||||
if not serverApi.IsInServer():
|
||||
pass
|
||||
|
||||
+21
@@ -54,6 +54,24 @@ gameComp = comp.CreateGame(LevelId)
|
||||
# BLOCK_SWITCHES 是一个列表,每条规则是一个 dict,格式见 BlockSwitchData.py 顶部注释
|
||||
from ..BlockSwitchData import BLOCK_SWITCHES
|
||||
|
||||
# ---- 已由 DeadmobService/DeadmobTimerService 接管的死亡生物方块 ----
|
||||
# 这些方块属于"死亡生物"(xy_deadmob) 分类,由新系统处理(挂肉钩切肉/鱼晾干/死鱼切块),
|
||||
# 工具切换系统必须跳过,否则右键会触发旧规则(含逆向退回),和新系统双重响应产生冲突。
|
||||
_DEADMOB_OWNED = set([
|
||||
"rtdd:meathook",
|
||||
"rtdd:cow_0", "rtdd:cow_1", "rtdd:cow_2", "rtdd:cow_3",
|
||||
"rtdd:pig_0", "rtdd:pig_1", "rtdd:pig_2", "rtdd:pig_3",
|
||||
"rtdd:sheep", "rtdd:sheep_1", "rtdd:sheep_2", "rtdd:sheep_3",
|
||||
"rtdd:hang_meat_hooks_1", "rtdd:hang_meat_hooks_2",
|
||||
"rtdd:hang_meat_hooks_3", "rtdd:hang_meat_hooks_4",
|
||||
"rtdd:meathookcod_1", "rtdd:meathookcod_2", "rtdd:meathookcoddry",
|
||||
"rtdd:killfish_0", "rtdd:killfish_1", "rtdd:killfish_2", "rtdd:killfish_3",
|
||||
"rtdd:killcod_0", "rtdd:killcod_1", "rtdd:killcod_2",
|
||||
"rtdd:deadsquida", "rtdd:dead_squid_1",
|
||||
# 旧版挂鱼方块(minecraft:fish 挂肉钩),已被新挂鱼(鲑鱼/鳕鱼)取代
|
||||
"rtdd:fish_1", "rtdd:fish_2",
|
||||
])
|
||||
|
||||
|
||||
# ================================================================================
|
||||
# 工具函数:读取物品 userData 里的嵌套字段
|
||||
@@ -185,6 +203,9 @@ class BlockSwitchService(BlueFoxServerSystem):
|
||||
|
||||
# ---- 第二步:O(1) 方块名拦截 ----
|
||||
# 只有工具方块的右键才归本系统处理;做菜方块直接放过,交给 CookingService
|
||||
if blockName in _DEADMOB_OWNED:
|
||||
# 死亡生物方块由新系统(DeadmobService)处理,本系统跳过
|
||||
return
|
||||
if blockName not in self.switchBlockSet:
|
||||
return
|
||||
|
||||
|
||||
+5
-1
@@ -175,6 +175,7 @@ class FeatureDispatcher(BlueFoxServerSystem):
|
||||
"""
|
||||
blockName = args.get("blockName")
|
||||
service = self.blockOwner.get(blockName)
|
||||
print "[FD-BlockUse]", blockName, "svc:", (service.__class__.__name__ if service else "NONE")
|
||||
if not service:
|
||||
# 这个方块不属于任何已注册的功能 → 交给原版/其他模组处理
|
||||
return
|
||||
@@ -199,13 +200,15 @@ class FeatureDispatcher(BlueFoxServerSystem):
|
||||
"""
|
||||
itemName = args.get("itemName")
|
||||
service = self.itemUseOnOwner.get(itemName)
|
||||
print "[FD-ItemUseOn]", itemName, "svc:", (service.__class__.__name__ if service else "NONE")
|
||||
if not service:
|
||||
return
|
||||
|
||||
handled = service.handleItemUseOn(args)
|
||||
if handled:
|
||||
args['ret'] = True
|
||||
playerId = args.get("playerId")
|
||||
# ServerItemUseOnEvent 的玩家键是 entityId,不是 playerId
|
||||
playerId = args.get("playerId") or args.get("entityId")
|
||||
self._cancelItemUse[playerId] = True
|
||||
|
||||
# ============================================================================
|
||||
@@ -219,6 +222,7 @@ class FeatureDispatcher(BlueFoxServerSystem):
|
||||
就取消这次默认行为,避免右键转换方块时误喝药水。
|
||||
"""
|
||||
playerId = args.get("playerId")
|
||||
print "[FD-ItemTryUse]", args.get("itemName"), "player", playerId
|
||||
if self._cancelItemUse.pop(playerId, False):
|
||||
args['cancel'] = True
|
||||
|
||||
|
||||
+2
-1
@@ -160,7 +160,8 @@ class BarbecueService(BlueFoxServerSystem):
|
||||
返回 True=已处理,False=当前组合无匹配规则。
|
||||
"""
|
||||
itemName = args.get("itemName")
|
||||
playerId = args.get("playerId")
|
||||
# ServerItemUseOnEvent 的玩家键是 entityId,不是 playerId
|
||||
playerId = args.get("playerId") or args.get("entityId")
|
||||
rule = self.itemUseOnRecipes.get(itemName)
|
||||
if not rule:
|
||||
return False
|
||||
|
||||
Reference in new issue
Block a user