搬运了原版食材 死亡生物 手办 功能实现 小bug

This commit is contained in:
wenhe committed 2026-09-02 19:23:37 +08:00
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
@@ -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
@@ -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
@@ -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
@@ -48,7 +48,7 @@
"netease:block_entity": {
"client_tick": false,
"movable": false,
"tick": false
"tick": true
}
}
}
@@ -48,7 +48,7 @@
"netease:block_entity": {
"client_tick": false,
"movable": false,
"tick": false
"tick": true
}
}
}
@@ -48,7 +48,7 @@
"netease:block_entity": {
"client_tick": false,
"movable": false,
"tick": false
"tick": true
}
}
}
@@ -68,7 +68,10 @@
"rtdd:peachpile_0",
"rtdd:orangepile_0",
"rtdd:apple_pile",
"rtdd:egg_pile"
"rtdd:egg_pile",
"rtdd:grape",
"rtdd:peach",
"rtdd:orange"
]
},
{
+4 -1
View File
@@ -1231,4 +1231,7 @@ item.rtdd:pepper.name=辣椒
item.rtdd:brownrice.name=大米
item.rtdd:noodles.name=生面
item.rtdd:costillavacaes.name=牛肋
item.rtdd:scallions.name=葱
item.rtdd:scallions.name=葱
item.rtdd:grape.name=葡萄
item.rtdd:peach.name=桃子
item.rtdd:orange.name=橙子
@@ -90,6 +90,15 @@
},
"scallions": {
"textures": "textures/items/cong_"
},
"grape": {
"textures": "textures/items/grape"
},
"peach": {
"textures": "textures/items/taozi1"
},
"orange": {
"textures": "textures/items/ju"
}
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+4 -1
View File
@@ -58,6 +58,9 @@
10. 土豆堆 / 胡萝卜堆(b_40) / 桃子堆 / 橙子堆 / 苹果堆 / 鸡蛋堆
转换条件:[静态堆叠食材,无独立转换](注:面包堆已移入谷物·米面组)
10a. 葡萄(grape) / 桃子(peach) / 橙子(orange)
转换条件:[静态水果食材,无独立转换](本次由Java版迁入,用于乡野饮料榨汁/冰棍/炒冰)
========================================
五、谷物·米面
========================================
@@ -117,7 +120,7 @@ beef_tenderloin(牛里脊)、legcow(牛腿肉)、costillavacaes(牛肋)、porklo
lobster(龙虾)、sashimi(生鱼片)、thedriedfish(鱼干)
【蔬果·堆类】potato_pile(土豆堆)、carrot_pile(胡萝卜堆)、b_40(胡萝卜堆)、peachpile_0(桃子堆)、
orangepile_0(橙子堆)、apple_pile(苹果堆)、egg_pile(鸡蛋堆)
orangepile_0(橙子堆)、apple_pile(苹果堆)、egg_pile(鸡蛋堆)、grape(葡萄)、peach(桃子)、orange(橙子)
【谷物·米面】brownrice(大米)、bread_pile(面包堆)
+48
View File
@@ -98,3 +98,51 @@
- 牛肋(costillavacaes): 从Java版迁入, 归乡野食材/肉类·肉馅组, 用于胡萝卜牛排骨(菜名保留"牛排骨") [已迁移]
- 葱(scallions): 从Java版迁入, 归乡野食材/蔬菜·切配组, 用于炒锅加葱/葱花锅底 [已迁移]
- 香菜锅底 → 改名"葱花锅底"(食材用葱): Java版无香菜, 触发食材已从青菜改为葱 [已改]
########################################
【死亡生物】(xy_deadmob) 2026-09-02
########################################
一、挂肉钩-挂放 (手持尸体/原版鱼右键空钩 meathook, 消耗1)
- 死牛→整只牛(cow_0)、死猪→整只猪(pig_0)、死羊→整只羊(sheep) [已实现]
- 原版鲑鱼(salmon)→鲑鱼挂一条→两条(hang_meat_hooks_1/2) [已实现]
- 原版鳕鱼(cod)→鳕鱼挂一条→两条(meathookcod_1/2) [已实现]
二、挂肉钩-切肉 (手持 菜刀cleaver, 不可逆, 掉落物随机数量)
- 牛: 去头掉牛头骨1+原版牛肉4~5 → 去四肢掉牛腿肉4 → 去肉掉牛肋2~3+牛里脊2~3+牛肉4~5 → 空钩掉碎肉2~3+牛肉4~5 [已实现]
- 猪: 去皮掉五花肉2~3+生猪排4~5 → 去四肢掉猪蹄4 → 去肉掉猪肋排2~3+生猪排4~5 → 空钩掉碎肉2~3+生猪排4~5 [已实现]
- 羊: 去皮掉羊小排2~3+生羊肉4~5 → 去四肢掉羊腿4 → 去肉掉羊里脊2~3+生羊肉4~5 → 空钩掉碎肉2~3+生羊肉4~5 [已实现]
三、挂肉钩-取下退回 (切前空手右键, 掉落回尸体)
- 整只牛/猪/羊 → 空钩 + 掉落回 死牛/死猪/死羊 [已实现]
四、鱼晾干 (计时300秒, 挂上自动开始 autoStart=True)
- 鲑鱼挂一条→干一条、两条→干两条; 鳕鱼挂两条→干两条 [已实现]
五、取鱼干 (空手右键干钩, 掉落物)
- 干鲑鱼/干鳕鱼钩 → 掉落 鱼干(thedriedfish) [已实现]
六、死鱼/死鱿鱼切块 (手持菜刀)
- 死鲑鱼: 4刀每刀掉1份生鱼片, 共4份 → 消失 [已实现]
- 死鳕鱼: 3刀每刀掉1份生鱼片, 共3份 → 消失 [已实现]
- 死鱿鱼: 切须掉5~6个鱿鱼须 → 变死鱿鱼(切掉鱿鱼须) [已实现]
【未做】尸体生成机制(玩家杀死生物生成尸体) 按txt标注暂时不搞
########################################
【手办】(xy_shouban) 2026-09-02
########################################
一、盲盒开盒 (空手右键 盲盒_未开 jewelrybox_0)
- 换为 盲盒_开过 jewelrybox_1, 随机开出 1 个手办(掉落物形式), 提示 "盲盒开出了XX!" [已实现]
- 开出范围: 猫手办_0(cat_0)、狐狸手办_0(fox_0)、赞助者手办_1~6(figurines~5) 共8种均等概率 [已实现]
- 注意: 只开猫/狐狸转换链【第一个】, cat_1~3、fox_1~3 无法从盲盒开出 [已实现]
二、猫/狐狸手办循环切换 (空手右键逐级切换)
- 猫: cat_0 → cat_1 → cat_2 → cat_3 → cat_0 (循环) [已实现]
- 狐狸: fox_0 → fox_1 → fox_2 → fox_3 → fox_0 (循环) [已实现]
- 说明: cat_1~3、fox_1~3 只能通过循环转换获得
三、静态手办 (无转换)
- 赞助者手办_1~6(figurines~5) 仅由盲盒开出, 无右键转换 [已实现]
+24
View File
@@ -48,3 +48,27 @@
- 说明: 因设计为直接食用, 故【不设"取下"规则】→ 空手右键烤熟的烤鲑鱼
不会出现"取下"成功提示。这是设计如此, 不是遗漏。
烤熟时已有完成提示 "§e烤鲑鱼烤熟了!"
########################################
【死亡生物】(xy_deadmob)
########################################
一、尸体生成机制
- 设想: 玩家杀死牛/猪/羊/鱿鱼/村民时, 在生物死亡地生成对应尸体
(死牛 dead_cow / 死猪 dead_pig / 死羊 dead_sheep / 死鱿鱼 deadsquida / 村民尸体 dead_villager)
- 未做原因: 转化文档 todo 已标注"暂时不搞" (死亡生物转化关系.txt 末尾 todo)
二、死鲑鱼/死鳕鱼切块掉落物数量【已实现, 仅记录原设计】
- 死鲑鱼: 4刀共得4份生鱼片; 死鳕鱼: 3刀共得3份生鱼片; 死鱿鱼: 切须得5~6个鱿鱼须
- 说明: 均已按批注实现, 此处仅为对照记录, 无未做项
########################################
【方块工具】(xy_blocktools)
########################################
一、渔网-自动捕鱼
- 方块: fishingnet(网(渔网))
- 设想: 放在水中 → 一段时间后自动捕鱼 → 鱼以掉落物形式出现在渔网上方
- 未做原因: 转化文档 todo 已标注"后续实现" (方块工具转化关系.txt 唯一一条 todo)
-41
View File
@@ -1,41 +0,0 @@
========================================
【吊锅】(xy_diaoguo) 转化关系
========================================
说明:
- 吊锅分类当前仅有方块归属,菜谱/烹饪流程后续补充
- 吊锅需架在"营火"上使用(架锅系列默认营火底座)
- 转换条件多为待确认
========================================
一、吊锅基础形态
========================================
1. 吊锅_12(空锅) -> 吊锅_16(加水锅)
转换条件:[手持 水桶 右键 进行转换,消耗水桶获得空桶]
机制: 手持水桶右键空锅,水桶变空桶,变为加水锅
2. 吊锅_16(加水锅) -> 吊锅_8
转换条件:【待确认】吊锅架到营火上?
机制: 将吊锅架到营火上(操作待确认)
========================================
二、吊锅炖煮(后续补充)
========================================
3. 吊锅_1 -> 吊锅_2 -> 吊锅_3 -> 吊锅_4 -> 吊锅_5 -> 吊锅_6 -> 吊锅_7
转换条件:【待确认】炖煮进度逐级转换,配方后续补充
机制: 计时炖煮逐级转换(配方后续补充)
4. 吊锅_9 -> 吊锅_10 -> 吊锅_11
转换条件:【待确认】炖煮进度逐级转换,配方后续补充
机制: 计时炖煮逐级转换(配方后续补充)
5. 吊锅_13 -> 吊锅_14 -> 吊锅_15 -> 吊锅_17 -> 吊锅_18
转换条件:【待确认】炖煮进度逐级转换,配方后续补充
机制: 计时炖煮逐级转换(配方后续补充)
========================================
三、方块清单
========================================
potsimmering_0(吊锅_1)、potsimmering_1(吊锅_2)、potsimmering_2(吊锅_3)、potsimmering_3(吊锅_4)、
potsimmering_4(吊锅_5)、potsimmering_5(吊锅_6)、potsimmering_6(吊锅_7)、potsimmeringwater(吊锅_8)、
b_168(吊锅_9)、b_169(吊锅_10)、b_170(吊锅_11)、b_65(吊锅_12(空锅))、b_67(吊锅_13)、b_68(吊锅_14)、
b_69(吊锅_15)、b_70(吊锅_16(加水锅))、b_71(吊锅_17)、b_72(吊锅_18)
-24
View File
@@ -1,24 +0,0 @@
========================================
【布艺旗帜】(xy_cloth) 转化关系
========================================
说明:
- 布艺旗帜分类无分组,按标识自动排序
- 全部为静态布料/遮阳布/旗帜方块,无转换关系
========================================
方块清单(均无转化关系)
========================================
布料类:
cloth(衣物(布料))、b_51(蓝色布料)、b_52(红色布料_1)、b_28(黄色布料_2)、b_241(黄色布料_1)、
cloth_blue(淡蓝色布料)、cloth_red(红色布料_2)、cloth_yellow(黄色布料_3)、cloth_lime(黄绿色布料)、cloth_purple(紫色布料)
遮阳布类:
b_53(蓝色遮阳布)、b_54(红色遮阳布_1)、b_29(黄色遮阳布_2)、b_241a(黄色遮阳布_1)、
sunshade_cloth_blue(淡蓝色遮阳布)、sunshade_cloth_red(红色遮阳布_2)、sunshade_cloth_yellow(黄色遮阳布_3)、
sunshade_cloth_lime(石灰遮阳布)、sunshade_cloth_purple(紫色遮阳布)、
sunshaden_cloth_orange(橙色遮阳布)、sunshaden_cloth_lime(黄绿色遮阳布)
旗帜类:
b_59(旗子_1)、b_62(旗子_2)、b_63(旗子_3)、flag(旗子_4)、flag_blue_lime_oblique(旗子_5(蓝石灰斜纹旗))、
flag_brown_blue(旗子_6(棕蓝旗))、flag_red_orange(旗子_7(红橙旗))、flag_red_orange_oblique(旗子_8(红橙斜纹旗))、
b_60(斜旗子_1)、b_61(斜旗子_2)
+3
View File
@@ -21,3 +21,6 @@ fox_0(狐狸手办_0)、fox_1(手办_1(狐狸手办_1))、fox_2(手办_2(狐狸
figurines(赞助者手办_1)、figurines_1(赞助者手办_2)、figurines_2(赞助者手办_3)、figurines_3(赞助者手办_4)、
figurines_4(赞助者手办_5)、figurines_5(赞助者手办_6)
以上为静态手办,无转化关系
todo :cat_0(胡萝卜纸巾猫手办_1)、cat_1(猫手办_2)、cat_2(猫手办_3)、cat_3(猫手办_4)做一个循环转化关系
cat_0 -> cat_1 -> cat_2 -> cat_3 -> cat_0
狐狸同理:fox_0 -> fox_1 -> fox_2 -> fox_3 -> fox_0
+2 -2
View File
@@ -28,8 +28,8 @@
机制: 手持菜刀右键,掉落4个牛腿肉(legcow)(四肢相关,固定4个)
5. 挂肉钩(牛_去四肢) -> 挂肉钩(牛_去肉)
转换条件:[手持 菜刀 右键 进行转换,掉落牛里脊]
机制: 手持菜刀右键,掉落2-3个牛里脊(beef_tenderloin)+4-5个原版牛肉
转换条件:[手持 菜刀 右键 进行转换,掉落牛肋/牛里脊]
机制: 手持菜刀右键,掉落2-3个牛肋(costillavacaes)+2-3个牛里脊(beef_tenderloin)+4-5个原版牛肉
6. 挂肉钩(牛_去肉) -> 挂肉钩(空钩)
转换条件:[手持 菜刀 右键 进行转换,掉落碎肉]
+2
View File
@@ -52,6 +52,8 @@
- 第二批(汤锅/炒锅缺料补齐): 大米(brownrice, →乡野食材/谷物·米面组)、牛肋(costillavacaes, →乡野食材/肉类组)、
葱(scallions, →乡野食材/蔬菜组)、生面(noodles, →面食.甜食分类/面粉·面团组)
- 香菜锅底(原rtdd:vegetablespotbase): 因Java版无香菜食材, 改名"葱花锅底", 触发食材用葱(或青菜)
- 第三批(乡野饮料水果): 葡萄(grape)、桃子(peach)、橙子(orange) → 乡野食材/蔬果·堆类,
用于饮料榨汁(葡萄汁/桃子汁/橙汁)/冰棍/炒冰等
========================================
-44
View File
@@ -1,44 +0,0 @@
========================================
【酒水酿造】(xy_brewing) 转化关系
========================================
说明:
- 酒水酿造分类无分组,按标识自动排序
- 主要由 酒桶系列(酿造) 与 酒杯系列(盛装) 构成
- 酿造为计时发酵转换(约60秒一级)
- 【待确认】表示该步骤所需的具体操作或顺序尚未最终确定
========================================
一、酒桶系列(酿造)
========================================
1. 酒桶_1 -> 酒桶_2 -> 酒桶_3(酒桶)
转换条件:[手持 工具 右键 进行转换(改装升级)]
机制: 手持木工工具右键,逐级改装酒桶
2. 酒桶_3(酒桶) -> 空酒桶
转换条件:[右键 进行转换(清空)]
机制: 空手右键,清空酒桶
3. 空酒桶 + 酿造原料 -> 满酒桶_1
转换条件:[手持 酿造原料(谷物/水果等) 右键 进行转换,消耗1个]
机制: 手持酿造原料右键,装入原料,变为满酒桶_1
4. 满酒桶_1 -> 满酒桶_2 -> 满酒桶_3 -> 满酒桶_4 -> 满酒桶_5 -> ... -> 满酒桶_16 -> 满酒桶_17
转换条件:[计时发酵自动转换,逐级酿造]
机制: 计时发酵约60秒升一级,逐桶酿造至满酒桶_17(共17级)
========================================
二、酒杯系列(盛装)
========================================
5. 满酒桶 + 酒杯 -> 酒杯_1 -> 酒杯_2 -> ... -> 酒杯_10
转换条件:[手持 酒杯 右键 进行转换,从酒桶取酒]
机制: 手持酒杯右键满酒桶,盛酒变为酒杯,逐杯取酒至酒杯_10
========================================
三、成品方块清单
========================================
- 酒桶系列: b_25(酒桶_1)、b_81(酒桶_2)、wine_barrel(酒桶_3)、b_85(空酒桶)、
b_238(满酒桶_1)、b_238_t_1(满酒桶_2)、b_238_t_2(满酒桶_3)、b_238_t_3(满酒桶_4)、b_239(满酒桶_5)、
b_82(满酒桶_6)、b_83(满酒桶_7)、b_84(满酒桶_8)、b_91(满酒桶_9)、b_92(满酒桶_10)、b_93(满酒桶_11)、
b_94(满酒桶_12)、b_95(满酒桶_13)、b_96(满酒桶_14)、b_97(满酒桶_15)、b_98(满酒桶_16)、violet_beer_kegs_0(满酒桶_17)
- 酒杯系列: b_114(酒杯_1)、b_115(酒杯_2)、b_116(酒杯_3)、b_117(酒杯_4)、b_118(酒杯_5)、
b_126(酒杯_6)、b_234(酒杯_7)、b_235(酒杯_8)、b_236(酒杯_9)、mug(酒杯_10)