烧烤 动物养殖 分类 功能实现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,292 @@
# -*- coding: utf-8 -*-
"""
================================================================================
动物养殖方块转换规则数据
================================================================================
所有"动物养殖"分类下"右键方块→消耗物品→替换方块"的转换规则都在这里。
只被 AnimalService 读取,FeatureDispatcher 通过方块名集合路由到 AnimalService,
不会去查其他功能(烧烤/做菜/工具切换)的数据库。
与 BlockSwitchData.py 的关系:
BlockSwitchData.py = 通用工具方块切换(箭桶、挂肉钩、水槽、书柜等)
AnimalData.py = 动物养殖专属(鸡窝、饲料盆、饲料槽、粪便等)
字段说明(与 BlockSwitchData 基本一致,新增 giveCount/dropItem):
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: 计时型转换需要多少秒(到时间自动替换方块)
================================================================================
"""
ANIMAL_SWITCHES = [
# ============================================================
# 一、鸡窝(产蛋) —— 低级机制:手持鸡蛋右键放置递增
# 对应方块:chickencoop_0(0蛋) ~ chickencoop_5(5蛋)
# ============================================================
# 【放蛋1】鸡窝_1(0蛋) → 鸡窝_2(1蛋)
{
"source": "rtdd:chickencoop_0",
"item": "minecraft:egg",
"target": "rtdd:chickencoop_1",
"consume": 1,
"type": "switch",
"switchCd": 0.15,
"giveItem": None,
},
# 【放蛋2】鸡窝_2(1蛋) → 鸡窝_3(2蛋)
{
"source": "rtdd:chickencoop_1",
"item": "minecraft:egg",
"target": "rtdd:chickencoop_2",
"consume": 1,
"type": "switch",
"switchCd": 0.15,
"giveItem": None,
},
# 【放蛋3】鸡窝_3(2蛋) → 鸡窝_4(3蛋)
{
"source": "rtdd:chickencoop_2",
"item": "minecraft:egg",
"target": "rtdd:chickencoop_3",
"consume": 1,
"type": "switch",
"switchCd": 0.15,
"giveItem": None,
},
# 【放蛋4】鸡窝_4(3蛋) → 鸡窝_5(4蛋)
{
"source": "rtdd:chickencoop_3",
"item": "minecraft:egg",
"target": "rtdd:chickencoop_4",
"consume": 1,
"type": "switch",
"switchCd": 0.15,
"giveItem": None,
},
# 【放蛋5】鸡窝_5(4蛋) → 鸡窝_6(5蛋)
{
"source": "rtdd:chickencoop_4",
"item": "minecraft:egg",
"target": "rtdd:chickencoop_5",
"consume": 1,
"type": "switch",
"switchCd": 0.15,
"giveItem": None,
},
# ============================================================
# 二、鸡窝(取蛋) —— 空手右键取走鸡蛋,以掉落物形式生成
# 数量转换遵循"递增→递减"双向规则:放蛋1→2→3→4→5,取蛋5→4→3→2→1
# 取蛋后一律回到0蛋形态(chickencoop_0)
# ============================================================
# 【取5蛋】鸡窝_6(5蛋) → 鸡窝_1(0蛋),掉落5个鸡蛋
{
"source": "rtdd:chickencoop_5",
"item": None,
"target": "rtdd:chickencoop_0",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "minecraft:egg", "count": 5}],
"giveItem": None,
},
# 【取4蛋】鸡窝_5(4蛋) → 鸡窝_1(0蛋),掉落4个鸡蛋
{
"source": "rtdd:chickencoop_4",
"item": None,
"target": "rtdd:chickencoop_0",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "minecraft:egg", "count": 4}],
"giveItem": None,
},
# 【取3蛋】鸡窝_4(3蛋) → 鸡窝_1(0蛋),掉落3个鸡蛋
{
"source": "rtdd:chickencoop_3",
"item": None,
"target": "rtdd:chickencoop_0",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "minecraft:egg", "count": 3}],
"giveItem": None,
},
# 【取2蛋】鸡窝_3(2蛋) → 鸡窝_1(0蛋),掉落2个鸡蛋
{
"source": "rtdd:chickencoop_2",
"item": None,
"target": "rtdd:chickencoop_0",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "minecraft:egg", "count": 2}],
"giveItem": None,
},
# 【取1蛋】鸡窝_2(1蛋) → 鸡窝_1(0蛋),掉落1个鸡蛋
{
"source": "rtdd:chickencoop_1",
"item": None,
"target": "rtdd:chickencoop_0",
"consume": 0,
"type": "switch",
"dropItem": [{"name": "minecraft:egg", "count": 1}],
"giveItem": None,
},
# ============================================================
# 三、鸡饲料盆 —— 手持种子右键填充,计时变空
# 对应方块:chickenmanger_0(空)、chickenmanger_1(满)
# ============================================================
# 【加饲料】鸡饲料盆_1(空) → 鸡饲料盆_2(满),消耗16个种子
{
"source": "rtdd:chickenmanger_0",
"item": "minecraft:wheat_seeds",
"target": "rtdd:chickenmanger_1",
"consume": 16,
"type": "switch",
"giveItem": None,
},
# 【计时变空】鸡饲料盆_2(满) → 鸡饲料盆_1(空),计时60秒
# 这是一个自动转换:玩家填充后启动计时,到时间自动变空
{
"source": "rtdd:chickenmanger_1",
"item": None,
"target": "rtdd:chickenmanger_0",
"consume": 0,
"type": "timer",
"time": 60,
"giveItem": None,
},
# ============================================================
# 四、饲料槽-小麦 —— 手持小麦右键填充(消耗32个),计时逐级减少
# 对应方块:manger_0(空)、manger_3(满小麦)、manger_2(半量小麦)、manger_1(少量小麦)
# ============================================================
# 【加小麦】饲料槽_1(空) → 饲料槽_2(满小麦),消耗32个小麦
{
"source": "rtdd:manger_0",
"item": "minecraft:wheat",
"target": "rtdd:manger_3",
"consume": 32,
"type": "switch",
"giveItem": None,
},
# 【计时减少1】饲料槽_2(满小麦) → 饲料槽_3(半量小麦),计时60秒
{
"source": "rtdd:manger_3",
"item": None,
"target": "rtdd:manger_2",
"consume": 0,
"type": "timer",
"time": 60,
"giveItem": None,
},
# 【计时减少2】饲料槽_3(半量小麦) → 饲料槽_4(少量小麦),计时60秒
{
"source": "rtdd:manger_2",
"item": None,
"target": "rtdd:manger_1",
"consume": 0,
"type": "timer",
"time": 60,
"giveItem": None,
},
# 【计时减少3】饲料槽_4(少量小麦) → 饲料槽_1(空),计时60秒
{
"source": "rtdd:manger_1",
"item": None,
"target": "rtdd:manger_0",
"consume": 0,
"type": "timer",
"time": 60,
"giveItem": None,
},
# ============================================================
# 五、饲料槽-水 —— 手持水桶右键填充,水桶变空桶
# 对应方块:manger_0(空)、mangerwater(水槽)
# ============================================================
# 【加水】饲料槽_1(空) → 饲料槽_6(水槽),消耗水桶,获得空桶
{
"source": "rtdd:manger_0",
"item": "minecraft:water_bucket",
"target": "rtdd:mangerwater",
"consume": 1,
"type": "switch",
"giveItem": "minecraft:bucket",
"giveCount": 1,
},
# ============================================================
# 六、饲料槽-胡萝卜 —— 手持胡萝卜右键填充(消耗32个),计时逐级减少
# 对应方块:manger_0(空)、pigmanger_1(满胡萝卜)、pigmanger_2(半量胡萝卜)
# ============================================================
# 【加胡萝卜】饲料槽_1(空) → 饲料槽_7(满胡萝卜),消耗32个胡萝卜
{
"source": "rtdd:manger_0",
"item": "minecraft:carrot",
"target": "rtdd:pigmanger_1",
"consume": 32,
"type": "switch",
"giveItem": None,
},
# 【计时减少1】饲料槽_7(满胡萝卜) → 饲料槽_8(半量胡萝卜),计时60秒
{
"source": "rtdd:pigmanger_1",
"item": None,
"target": "rtdd:pigmanger_2",
"consume": 0,
"type": "timer",
"time": 60,
"giveItem": None,
},
# 【计时减少2】饲料槽_8(半量胡萝卜) → 饲料槽_1(空),计时60秒
{
"source": "rtdd:pigmanger_2",
"item": None,
"target": "rtdd:manger_0",
"consume": 0,
"type": "timer",
"time": 60,
"giveItem": None,
},
# ============================================================
# 七、粪便清理 —— 空手右键逐级清理,最后消失
# 对应方块:feces_3(一坨)、feces_2(半坨)、feces_1(仅痕迹)
# 【食用部分后续在总食用功能中实现,本次不实现】
# ============================================================
# 【清理1】粪便(一坨) → 粪便(半坨)
{
"source": "rtdd:feces_3",
"item": None,
"target": "rtdd:feces_2",
"consume": 0,
"type": "switch",
"giveItem": None,
},
# 【清理2】粪便(半坨) → 粪便(仅痕迹)
{
"source": "rtdd:feces_2",
"item": None,
"target": "rtdd:feces_1",
"consume": 0,
"type": "switch",
"giveItem": None,
},
# 【清理3】粪便(仅痕迹) → 消失(空气)
{
"source": "rtdd:feces_1",
"item": None,
"target": "minecraft:air",
"consume": 0,
"type": "switch",
"giveItem": None,
},
]