烧烤 动物养殖 分类 功能实现1

This commit is contained in:
wenhe committed 2026-09-01 22:18:06 +08:00
1 parent 98335837dd
commit eac9409571
16 files changed
+1493 -5

No files matched your search

@@ -0,0 +1,289 @@
# -*- coding: utf-8 -*-
"""
================================================================================
烧烤方块转换规则数据
================================================================================
所有"烧烤"(xy_barbecue) 分类下"右键方块→消耗物品→替换方块"的转换规则都在这里。
只被 BarbecueService 读取,FeatureDispatcher 通过方块名集合路由到 BarbecueService,
不会去查其他功能(动物养殖/做菜/工具切换)的数据库。
【烤法区分】
1) 烤串(牛肉串/羊肉串/烤蔬菜串/烤香菇串)
→ 放在"烧烤架"上烤,右键 2 次转换,不计时
→ 牛肉串/羊肉串: 生=_1, 半熟=_0, 熟=_3(注意顺序与蔬菜串不同!)
→ 烤蔬菜串/烤香菇串: 生=_0, 半熟=_1, 熟=_3
2) 烤鸡/烤乳猪/烤鱼
→ "上支杆"烤法: 支杆=b_34, 手持生食材右键支杆上杆
→ 支杆下方放"篝火(原版营火 campfire)", 计时自动转换
→ 烤熟后空手右键"取下" → 以掉落物形式获得整只成品
【食用部分说明】
烤熟成品(整只/整头)的"吃东西逐级分食"转换(如 整只→5/6→…→1/6)
由后续统一的"总食用功能"实现,本次不实现、不收录。
字段说明(与 AnimalData 一致):
source: 被右键的方块ID(必填)
item: 玩家手里必须拿的物品,None=空手也行
target: 替换成什么方块,"minecraft:air"=消失
consume: 消耗物品数量,0=不消耗(默认1)
giveItem: 额外给玩家什么物品,None=不给
giveCount: giveItem 的数量,默认1
dropItem: 转换时以掉落物形式生成的物品列表,优先于 giveItem
格式: [{"name": "xxx", "count": N}, ...]
type: "switch"=右键切换, "timer"=计时自动转换
time: 计时型转换需要多少秒(到时间自动替换方块)
below: 计时型转换要求下方方块(如 ["minecraft:campfire"])
================================================================================
"""
BARBECUE_SWITCHES = [
# ============================================================
# 一、烧烤架(点火/灭火)
# ============================================================
# 【点火-打火石】烧烤架_1(无火) → 烧烤架_2(点燃),打火石不消耗
{
"source": "rtdd:barbecuegrill_0",
"item": "minecraft:flint_and_steel",
"target": "rtdd:barbecuegrill_1",
"consume": 0,
"type": "switch",
"giveItem": None,
},
# 【点火-烈焰弹】烧烤架_1(无火) → 烧烤架_2(点燃),烈焰弹消耗1个
{
"source": "rtdd:barbecuegrill_0",
"item": "minecraft:fire_charge",
"target": "rtdd:barbecuegrill_1",
"consume": 1,
"type": "switch",
"giveItem": None,
},
# 【灭火】烧烤架_2(点燃) → 烧烤架_1(无火),消耗水桶,获得空桶
{
"source": "rtdd:barbecuegrill_1",
"item": "minecraft:water_bucket",
"target": "rtdd:barbecuegrill_0",
"consume": 1,
"type": "switch",
"giveItem": "minecraft:bucket",
"giveCount": 1,
},
# ============================================================
# 二、烤串(放烧烤架上,右键 2 次转换,不计时)
# 【重要】牛肉串/羊肉串的 生=_1 半熟=_0;蔬菜串/香菇串的 生=_0 半熟=_1
# ============================================================
# 牛肉串: 生(_1) → 半熟(_0) → 熟(_3)
# 放在"已点燃的烧烤架"上方才能右键烤制(下方必须是 barbecuegrill_1)
{
"source": "rtdd:beefkebabs_1",
"item": None,
"target": "rtdd:beefkebabs_0",
"consume": 0,
"type": "switch",
"switchCd": 0.15,
"below": ["rtdd:barbecuegrill_1"],
"giveItem": None,
},
{
"source": "rtdd:beefkebabs_0",
"item": None,
"target": "rtdd:beefkebabs_3",
"consume": 0,
"type": "switch",
"switchCd": 0.15,
"below": ["rtdd:barbecuegrill_1"],
"giveItem": None,
},
# 羊肉串: 生(_1) → 半熟(_0) → 熟(_3)
{
"source": "rtdd:lambkebabs_1",
"item": None,
"target": "rtdd:lambkebabs_0",
"consume": 0,
"type": "switch",
"switchCd": 0.15,
"below": ["rtdd:barbecuegrill_1"],
"giveItem": None,
},
{
"source": "rtdd:lambkebabs_0",
"item": None,
"target": "rtdd:lambkebabs_3",
"consume": 0,
"type": "switch",
"switchCd": 0.15,
"below": ["rtdd:barbecuegrill_1"],
"giveItem": None,
},
# 烤蔬菜串: 生(_0) → 半熟(_1) → 熟(_3)
{
"source": "rtdd:roasted_vegetables_0",
"item": None,
"target": "rtdd:roasted_vegetables_1",
"consume": 0,
"type": "switch",
"switchCd": 0.15,
"below": ["rtdd:barbecuegrill_1"],
"giveItem": None,
},
{
"source": "rtdd:roasted_vegetables_1",
"item": None,
"target": "rtdd:roasted_vegetables_3",
"consume": 0,
"type": "switch",
"switchCd": 0.15,
"below": ["rtdd:barbecuegrill_1"],
"giveItem": None,
},
# 烤香菇串: 生(_0) → 半熟(_1) → 熟(_3)
{
"source": "rtdd:roastedmushrooms_0",
"item": None,
"target": "rtdd:roastedmushrooms_1",
"consume": 0,
"type": "switch",
"switchCd": 0.15,
"below": ["rtdd:barbecuegrill_1"],
"giveItem": None,
},
{
"source": "rtdd:roastedmushrooms_1",
"item": None,
"target": "rtdd:roastedmushrooms_3",
"consume": 0,
"type": "switch",
"switchCd": 0.15,
"below": ["rtdd:barbecuegrill_1"],
"giveItem": None,
},
# ============================================================
# 三、上杆(手持生食材右键 支杆b_34)
# ============================================================
# 【上烤鸡】支杆 + 生鸡肉(放置后方块物品) → 烤鸡(上烤架_生)
{
"source": "rtdd:b_34",
"item": "rtdd:roastchickenplace_0",
"target": "rtdd:roastchicken_0",
"consume": 1,
"type": "switch",
"giveItem": None,
},
# 【上烤乳猪】支杆 + 死猪 → 烤乳猪(生)
{
"source": "rtdd:b_34",
"item": "rtdd:dead_pig",
"target": "rtdd:roastpig_0",
"consume": 1,
"type": "switch",
"giveItem": None,
},
# 【上烤鳕鱼】支杆 + 鳕鱼 → 烤鳕鱼(生)
{
"source": "rtdd:b_34",
"item": "minecraft:cod",
"target": "rtdd:grilledcod_0",
"consume": 1,
"type": "switch",
"giveItem": None,
},
# 【上烤鲑鱼】支杆 + 鲑鱼 → 烤鲑鱼(生)
{
"source": "rtdd:b_34",
"item": "minecraft:salmon",
"target": "rtdd:grilled_fish",
"consume": 1,
"type": "switch",
"giveItem": None,
},
# ============================================================
# 四、计时烤制(上杆后,支杆下方篝火,计时自动转换)
# ============================================================
# 【烤熟】烤鸡(上烤架_生) → 烤鸡(上烤架_熟),下方需篝火,约60秒
{
"source": "rtdd:roastchicken_0",
"item": None,
"target": "rtdd:roastchicken_1",
"consume": 0,
"type": "timer",
"time": 60,
"below": ["minecraft:campfire"],
"giveItem": None,
},
# 【烤熟】烤乳猪(生) → 烤乳猪(熟),下方需篝火,约60秒
{
"source": "rtdd:roastpig_0",
"item": None,
"target": "rtdd:roastpig_1",
"consume": 0,
"type": "timer",
"time": 60,
"below": ["minecraft:campfire"],
"giveItem": None,
},
# 【烤熟】烤鳕鱼(生) → 烤鳕鱼(熟),下方需篝火,约60秒
{
"source": "rtdd:grilledcod_0",
"item": None,
"target": "rtdd:grilledcod_1",
"consume": 0,
"type": "timer",
"time": 60,
"below": ["minecraft:campfire"],
"giveItem": None,
},
# 【烤熟】烤鲑鱼(生) → 烤鲑鱼(熟),下方需篝火,约60秒
{
"source": "rtdd:grilled_fish",
"item": None,
"target": "rtdd:grilled_salmon",
"consume": 0,
"type": "timer",
"time": 60,
"below": ["minecraft:campfire"],
"giveItem": None,
},
# ============================================================
# 五、取下(空手右键烤熟方块,支杆恢复,成品以掉落物获得)
# ============================================================
# 【取下烤鸡】烤鸡(上烤架_熟) → 支杆 + 掉落 烤鸡(整只)
{
"source": "rtdd:roastchicken_1",
"item": None,
"target": "rtdd:b_34",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:roast_chickenplace_1", "count": 1}],
"giveItem": None,
},
# 【取下烤乳猪】烤乳猪(熟) → 支杆 + 掉落 烤乳猪(整只)
{
"source": "rtdd:roastpig_1",
"item": None,
"target": "rtdd:b_34",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "rtdd:roastpignew_1", "count": 1}],
"giveItem": None,
},
]
# ============================================================
# 六、手持物品右键"方块表面"生成规则(ServerItemUseOnEvent)
# ============================================================
# 目前只有一条:手持"原版生鸡肉"右键任意方块表面 → 在其表面生成
# "生鸡肉(原版生鸡肉右键放置后)"(roastchickenplace_0) 方块,消耗1个。
# 该规则由 FeatureDispatcher 转发 ServerItemUseOnEvent 到 BarbecueService。
ITEM_USE_ON_RULES = [
{
"item": "minecraft:chicken", # 手持的原版生鸡肉
"target": "rtdd:roastchickenplace_0", # 生成的目标方块
"consume": 1, # 消耗1个生鸡肉
},
]