# -*- coding: utf-8 -*- """ ================================================================================ 死亡生物方块转换规则数据 ================================================================================ 所有"死亡生物"(xy_deadmob) 分类下"右键方块→消耗物品→替换方块/掉落物品"的转换规则 都在这里。只被 DeadmobService / DeadmobTimerService 读取,FeatureDispatcher 通过 方块名集合路由到对应服务,不会去查其他功能的数据库。 【流程】 1) 挂肉钩挂放: 手持 死牛/死猪/死羊/原版鲑鱼/原版鳕鱼 右键 空钩(meathook) → 挂上对应尸体(消耗1个)。鱼可挂两条。 2) 取下退回: 切肉开始前, 空手右键 整只/整头 → 空钩 + 掉落回尸体(不可逆前可退) 3) 挂肉钩切肉: 手持 菜刀(cleaver) 右键 逐级切割(不可逆), 以掉落物形式获得对应部位肉 - 切肉每刀掉落数量: 常规肉 2~3 个; 四肢固定 4 个; 牛头骨固定 1 个; 去皮额外掉原版皮革4~6 - 牛: 去头去皮掉牛头骨1+原版牛肉4~5+皮革4~6 → 去四肢掉牛腿肉4 → 去肉掉牛肋2~3+牛里脊2~3+原版牛肉4~5 → 空钩掉碎肉2~3+原版牛肉4~5 - 猪: 去皮掉五花肉2~3+原版生猪排4~5+皮革4~6 → 去四肢掉猪蹄4 → 去肉掉猪肋排2~3+原版生猪排4~5 → 空钩掉碎肉2~3+原版生猪排4~5 - 羊: 去皮掉羊小排2~3+原版生羊肉4~5+皮革4~6 → 去四肢掉羊腿4 → 去肉掉羊里脊2~3+原版生羊肉4~5 → 空钩掉碎肉2~3+原版生羊肉4~5 4) 鱼晾干(计时): 鲑鱼/鳕鱼挂上后自动计时约300秒晾干(挂肉钩自动开始, autoStart=True) - 鲑鱼: 挂一条→干一条; 挂两条→干两条 - 鳕鱼: 挂两条→干两条 5) 取鱼干: 空手右键 干鱼钩 → 以掉落物形式获得 鱼干(thedriedfish) 6) 死鱼/死鱿鱼切块(手持菜刀, 掉落物): - 死鲑鱼: 共四刀, 每刀掉1份生鱼片(sashimi), 共4份 → 方块消失 - 死鳕鱼: 共三刀, 每刀掉1份生鱼片(sashimi), 共3份 → 方块消失 - 死鱿鱼: 一刀切须, 掉5~6个鱿鱼须(rawsquidwhiskersr) → 变为 死鱿鱼(切掉鱿鱼须) 【尸体生成机制】(玩家杀死对应生物生成尸体) 已在txt标注"暂时不搞", 本次不实现。 字段说明(与 AnimalData/BarbecueData 一致): source: 被右键的方块ID(必填) item: 玩家手里必须拿的物品, None=空手 target: 替换成什么方块, "minecraft:air"=消失 consume: 消耗物品数量, 0=不消耗(默认1) dropItem: 转换时以掉落物形式生成的物品列表(优先于 giveItem) 格式: [{"name": "xxx", "count": N}, ...] count 支持范围写法 (min,max), 服务端随机取整(如 (2,3)=2~3) type: "switch"=右键切换, "timer"=计时自动转换 time: 计时型转换需要多少秒 tip: 转换成功时给玩家的提示(绿色§a开头) doneTip: 计时到点完成时给启动者的提示 autoStart: 放置时是否自动开始计时, 默认True(鱼挂上自动晾干) ================================================================================ """ DEADMOB_SWITCHES = [ # ============================================================ # 一、挂肉钩 - 挂放尸体(手持尸体右键空钩, 消耗1个) # ============================================================ { "source": "rtdd:meathook", "item": "rtdd:dead_cow", "target": "rtdd:cow_0", "consume": 1, "type": "switch", "tip": None, "giveItem": None, }, { "source": "rtdd:meathook", "item": "rtdd:dead_pig", "target": "rtdd:pig_0", "consume": 1, "type": "switch", "tip": None, "giveItem": None, }, { "source": "rtdd:meathook", "item": "rtdd:dead_sheep", "target": "rtdd:sheep", "consume": 1, "type": "switch", "tip": None, "giveItem": None, }, # 挂鲑鱼(原版salmon): 空钩→一条→两条 { "source": "rtdd:meathook", "item": "minecraft:salmon", "target": "rtdd:hang_meat_hooks_1", "consume": 1, "type": "switch", "tip": None, "giveItem": None, }, { "source": "rtdd:hang_meat_hooks_1", "item": "minecraft:salmon", "target": "rtdd:hang_meat_hooks_2", "consume": 1, "type": "switch", "tip": None, "giveItem": None, }, # 挂鳕鱼(原版cod): 空钩→一条→两条 { "source": "rtdd:meathook", "item": "minecraft:cod", "target": "rtdd:meathookcod_1", "consume": 1, "type": "switch", "tip": None, "giveItem": None, }, { "source": "rtdd:meathookcod_1", "item": "minecraft:cod", "target": "rtdd:meathookcod_2", "consume": 1, "type": "switch", "tip": None, "giveItem": None, }, # ============================================================ # 二、取下退回(未切割前, 空手右键 整只/整头 → 空钩 + 掉落回尸体) # ============================================================ { "source": "rtdd:cow_0", "item": None, "target": "rtdd:meathook", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:dead_cow", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:pig_0", "item": None, "target": "rtdd:meathook", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:dead_pig", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:sheep", "item": None, "target": "rtdd:meathook", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:dead_sheep", "count": 1}], "tip": None, "giveItem": None, }, # ============================================================ # 三、挂肉钩切肉(手持 菜刀cleaver, 掉落物, 数量随机 2~3 / 四肢固定4) # ============================================================ # ---- 牛(不可逆) ---- { "source": "rtdd:cow_0", "item": "rtdd:cleaver", "target": "rtdd:cow_1", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:cow_skull", "count": 1}, {"name": "minecraft:beef", "count": (4, 5)}, {"name": "minecraft:leather", "count": (4, 6)}, ], "tip": None, "giveItem": None, }, { "source": "rtdd:cow_1", "item": "rtdd:cleaver", "target": "rtdd:cow_2", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:legcow", "count": 4}], "tip": None, "giveItem": None, }, { "source": "rtdd:cow_2", "item": "rtdd:cleaver", "target": "rtdd:cow_3", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:costillavacaes", "count": (2, 3)}, {"name": "rtdd:beef_tenderloin", "count": (2, 3)}, {"name": "minecraft:beef", "count": (4, 5)}, ], "tip": None, "giveItem": None, }, { "source": "rtdd:cow_3", "item": "rtdd:cleaver", "target": "rtdd:meathook", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:crushedmeat", "count": (2, 3)}, {"name": "minecraft:beef", "count": (4, 5)}, ], "tip": None, "giveItem": None, }, # ---- 猪(不可逆) ---- { "source": "rtdd:pig_0", "item": "rtdd:cleaver", "target": "rtdd:pig_1", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:porkloins", "count": (2, 3)}, {"name": "minecraft:porkchop", "count": (4, 5)}, {"name": "minecraft:leather", "count": (4, 6)}, ], "tip": None, "giveItem": None, }, { "source": "rtdd:pig_1", "item": "rtdd:cleaver", "target": "rtdd:pig_2", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:ham", "count": 4}], "tip": None, "giveItem": None, }, { "source": "rtdd:pig_2", "item": "rtdd:cleaver", "target": "rtdd:pig_3", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:porkrib", "count": (2, 3)}, {"name": "minecraft:porkchop", "count": (4, 5)}, ], "tip": None, "giveItem": None, }, { "source": "rtdd:pig_3", "item": "rtdd:cleaver", "target": "rtdd:meathook", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:crushedmeat", "count": (2, 3)}, {"name": "minecraft:porkchop", "count": (4, 5)}, ], "tip": None, "giveItem": None, }, # ---- 羊(不可逆) ---- { "source": "rtdd:sheep", "item": "rtdd:cleaver", "target": "rtdd:sheep_1", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:sheepracks", "count": (2, 3)}, {"name": "minecraft:mutton", "count": (4, 5)}, {"name": "minecraft:leather", "count": (4, 6)}, ], "tip": None, "giveItem": None, }, { "source": "rtdd:sheep_1", "item": "rtdd:cleaver", "target": "rtdd:sheep_2", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:legsleep", "count": 4}], "tip": None, "giveItem": None, }, { "source": "rtdd:sheep_2", "item": "rtdd:cleaver", "target": "rtdd:sheep_3", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:sheeploins", "count": (2, 3)}, {"name": "minecraft:mutton", "count": (4, 5)}, ], "tip": None, "giveItem": None, }, { "source": "rtdd:sheep_3", "item": "rtdd:cleaver", "target": "rtdd:meathook", "consume": 0, "type": "switch", "dropItem": [ {"name": "rtdd:crushedmeat", "count": (2, 3)}, {"name": "minecraft:mutton", "count": (4, 5)}, ], "tip": None, "giveItem": None, }, # ============================================================ # 四、取鱼干(空手右键 干鱼钩 → 掉落 鱼干) # ============================================================ { "source": "rtdd:hang_meat_hooks_3", "item": None, "target": "rtdd:meathook", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:thedriedfish", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:hang_meat_hooks_4", "item": None, "target": "rtdd:hang_meat_hooks_3", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:thedriedfish", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:meathookcoddry", "item": None, "target": "rtdd:meathook", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:thedriedfish", "count": 1}], "tip": None, "giveItem": None, }, # ============================================================ # 五、死鱼/死鱿鱼切块(手持 菜刀cleaver, 掉落物) # ============================================================ # 死鲑鱼: 四刀, 每刀1份生鱼片 { "source": "rtdd:killfish_0", "item": "rtdd:cleaver", "target": "rtdd:killfish_1", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:sashimi", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:killfish_1", "item": "rtdd:cleaver", "target": "rtdd:killfish_2", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:sashimi", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:killfish_2", "item": "rtdd:cleaver", "target": "rtdd:killfish_3", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:sashimi", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:killfish_3", "item": "rtdd:cleaver", "target": "minecraft:air", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:sashimi", "count": 1}], "tip": None, "giveItem": None, }, # 死鳕鱼: 三刀, 每刀1份生鱼片 { "source": "rtdd:killcod_0", "item": "rtdd:cleaver", "target": "rtdd:killcod_1", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:sashimi", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:killcod_1", "item": "rtdd:cleaver", "target": "rtdd:killcod_2", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:sashimi", "count": 1}], "tip": None, "giveItem": None, }, { "source": "rtdd:killcod_2", "item": "rtdd:cleaver", "target": "minecraft:air", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:sashimi", "count": 1}], "tip": None, "giveItem": None, }, # 死鱿鱼: 一刀切须 { "source": "rtdd:deadsquida", "item": "rtdd:cleaver", "target": "rtdd:dead_squid_1", "consume": 0, "type": "switch", "dropItem": [{"name": "rtdd:rawsquidwhiskersr", "count": (5, 6)}], "tip": None, "giveItem": None, }, # ============================================================ # 六、鱼晾干(计时自动转换, 挂上即自动开始 autoStart=True) # ============================================================ { "source": "rtdd:hang_meat_hooks_1", "item": None, "target": "rtdd:hang_meat_hooks_3", "consume": 0, "type": "timer", "time": 300, "giveItem": None, }, { "source": "rtdd:hang_meat_hooks_2", "item": None, "target": "rtdd:hang_meat_hooks_4", "consume": 0, "type": "timer", "time": 300, "giveItem": None, }, { "source": "rtdd:meathookcod_2", "item": None, "target": "rtdd:meathookcoddry", "consume": 0, "type": "timer", "time": 300, "giveItem": None, }, ] # 晾晒计时源方块(挂上鱼后变成这些方块, tick 自动开始晾干): # 用于挂鱼时记录玩家, 晾干完成时把 doneTip 发给该玩家。 DRY_SOURCE_BLOCKS = { "rtdd:hang_meat_hooks_1", "rtdd:hang_meat_hooks_2", "rtdd:meathookcod_2", }