Files
rtdd/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/siwangshengwu/DeadmobData.py
T
2026-09-03 14:09:44 +08:00

472 lines
16 KiB
Python

# -*- 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": "§a已把整只牛挂上肉钩",
"giveItem": None,
},
{
"source": "rtdd:meathook",
"item": "rtdd:dead_pig",
"target": "rtdd:pig_0",
"consume": 1,
"type": "switch",
"tip": "§a已把整只猪挂上肉钩",
"giveItem": None,
},
{
"source": "rtdd:meathook",
"item": "rtdd:dead_sheep",
"target": "rtdd:sheep",
"consume": 1,
"type": "switch",
"tip": "§a已把整只羊挂上肉钩",
"giveItem": None,
},
# 挂鲑鱼(原版salmon): 空钩→一条→两条
{
"source": "rtdd:meathook",
"item": "minecraft:salmon",
"target": "rtdd:hang_meat_hooks_1",
"consume": 1,
"type": "switch",
"tip": "§a已挂上一条鲑鱼,开始晾晒",
"giveItem": None,
},
{
"source": "rtdd:hang_meat_hooks_1",
"item": "minecraft:salmon",
"target": "rtdd:hang_meat_hooks_2",
"consume": 1,
"type": "switch",
"tip": "§a已再挂上一条鲑鱼",
"giveItem": None,
},
# 挂鳕鱼(原版cod): 空钩→一条→两条
{
"source": "rtdd:meathook",
"item": "minecraft:cod",
"target": "rtdd:meathookcod_1",
"consume": 1,
"type": "switch",
"tip": "§a已挂上一条鳕鱼,开始晾晒",
"giveItem": None,
},
{
"source": "rtdd:meathookcod_1",
"item": "minecraft:cod",
"target": "rtdd:meathookcod_2",
"consume": 1,
"type": "switch",
"tip": "§a已再挂上一条鳕鱼",
"giveItem": None,
},
# ============================================================
# 二、取下退回(未切割前, 空手右键 整只/整头 → 空钩 + 掉落回尸体)
# ============================================================
{
"source": "rtdd:cow_0",
"item": None,
"target": "rtdd:meathook",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:dead_cow", "count": 1}],
"tip": "§a取下了整只牛(尚未切割)",
"giveItem": None,
},
{
"source": "rtdd:pig_0",
"item": None,
"target": "rtdd:meathook",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:dead_pig", "count": 1}],
"tip": "§a取下了整只猪(尚未切割)",
"giveItem": None,
},
{
"source": "rtdd:sheep",
"item": None,
"target": "rtdd:meathook",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:dead_sheep", "count": 1}],
"tip": "§a取下了整只羊(尚未切割)",
"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": "§a砍下了牛头",
"giveItem": None,
},
{
"source": "rtdd:cow_1",
"item": "rtdd:cleaver",
"target": "rtdd:cow_2",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:legcow", "count": 4}],
"tip": "§a卸下了四肢牛腿肉",
"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": "§a剔出了牛肋和牛里脊",
"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": "§a刮下碎肉,肉钩已清空",
"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": "§a已给猪去皮",
"giveItem": None,
},
{
"source": "rtdd:pig_1",
"item": "rtdd:cleaver",
"target": "rtdd:pig_2",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:ham", "count": 4}],
"tip": "§a卸下了四肢猪蹄",
"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": "§a剔出了猪肋排",
"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": "§a刮下碎肉,肉钩已清空",
"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": "§a已给羊去皮",
"giveItem": None,
},
{
"source": "rtdd:sheep_1",
"item": "rtdd:cleaver",
"target": "rtdd:sheep_2",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:legsleep", "count": 4}],
"tip": "§a卸下了四肢羊腿",
"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": "§a剔出了羊里脊",
"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": "§a刮下碎肉,肉钩已清空",
"giveItem": None,
},
# ============================================================
# 四、取鱼干(空手右键 干鱼钩 → 掉落 鱼干)
# ============================================================
{
"source": "rtdd:hang_meat_hooks_3",
"item": None,
"target": "rtdd:meathook",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:thedriedfish", "count": 1}],
"tip": "§a取下了1份鱼干",
"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": "§a取下了1份鱼干,还剩一条",
"giveItem": None,
},
{
"source": "rtdd:meathookcoddry",
"item": None,
"target": "rtdd:meathook",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:thedriedfish", "count": 1}],
"tip": "§a取下了1份鱼干",
"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": "§a切下1份生鱼片",
"giveItem": None,
},
{
"source": "rtdd:killfish_1",
"item": "rtdd:cleaver",
"target": "rtdd:killfish_2",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:sashimi", "count": 1}],
"tip": "§a切下1份生鱼片",
"giveItem": None,
},
{
"source": "rtdd:killfish_2",
"item": "rtdd:cleaver",
"target": "rtdd:killfish_3",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:sashimi", "count": 1}],
"tip": "§a切下1份生鱼片",
"giveItem": None,
},
{
"source": "rtdd:killfish_3",
"item": "rtdd:cleaver",
"target": "minecraft:air",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:sashimi", "count": 1}],
"tip": "§a切完最后一份生鱼片",
"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": "§a切下1份生鱼片",
"giveItem": None,
},
{
"source": "rtdd:killcod_1",
"item": "rtdd:cleaver",
"target": "rtdd:killcod_2",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:sashimi", "count": 1}],
"tip": "§a切下1份生鱼片",
"giveItem": None,
},
{
"source": "rtdd:killcod_2",
"item": "rtdd:cleaver",
"target": "minecraft:air",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:sashimi", "count": 1}],
"tip": "§a切完最后一份生鱼片",
"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": "§a切下了鱿鱼须",
"giveItem": None,
},
# ============================================================
# 六、鱼晾干(计时自动转换, 挂上即自动开始 autoStart=True)
# ============================================================
{
"source": "rtdd:hang_meat_hooks_1",
"item": None,
"target": "rtdd:hang_meat_hooks_3",
"consume": 0,
"type": "timer",
"time": 300,
"doneTip": "§e鲑鱼晾干了!",
"giveItem": None,
},
{
"source": "rtdd:hang_meat_hooks_2",
"item": None,
"target": "rtdd:hang_meat_hooks_4",
"consume": 0,
"type": "timer",
"time": 300,
"doneTip": "§e鲑鱼晾干了!",
"giveItem": None,
},
{
"source": "rtdd:meathookcod_2",
"item": None,
"target": "rtdd:meathookcoddry",
"consume": 0,
"type": "timer",
"time": 300,
"doneTip": "§e鳕鱼晾干了!",
"giveItem": None,
},
]
# 晾晒计时源方块(挂上鱼后变成这些方块, tick 自动开始晾干):
# 用于挂鱼时记录玩家, 晾干完成时把 doneTip 发给该玩家。
DRY_SOURCE_BLOCKS = {
"rtdd:hang_meat_hooks_1",
"rtdd:hang_meat_hooks_2",
"rtdd:meathookcod_2",
}