Files
rtdd/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py
T
2026-09-28 11:19:15 +08:00

109 lines
5.4 KiB
Python

# -*- coding: utf-8 -*-
"""
================================================================================
乡野自然(xy_natural)转化规则数据
================================================================================
统一管理"乡野自然"(xy_natural) 分类下的转化规则常量。只被
NaturalService / NaturalTimerService 读取,FeatureDispatcher 通过方块名/物品名
集合路由到对应服务。
【本次实现的功能】
1) 果树结果 (计时): 苹果/桃/橘 树叶 -> 果实形态 逐级结果
2) 葡萄藤生长 (计时): grapebushes_1 -> grapebushes_2
3) 葡萄藤取葡萄 (右键): 成熟葡萄藤 -> 取3葡萄, 变回葡萄藤_1
4) 柴火堆叠/取用 (右键): firewood <-> firewood_2
5) 柴火分解 (工作台配方): firewood -> 9个木条
6) 水稻种植 (手持稻谷右键耕地): farmland -> 水稻刚种下
7) 水稻生长 (计时): riceseedlingsb -> c -> d
8) 水稻收获 (左键破坏掉落): 水稻方块破坏掉稻谷, 成熟额外掉大米
【不实现(后续实现)】
- 果树"树苗成长"机制(树叶对应树苗, 像原版一样长成树): 后续实现, 本次跳过。
【计时说明】
果树结果/藤蔓生长/水稻生长均 autoStart=True(放置/种下后自动开始),
用绝对时间戳写方块实体数据, 退出重进继续计时。
================================================================================
"""
# ============================================================================
# 一、柴火堆叠/取用(右键)
# firewood_2(柴火_2) + 手持柴火 -> firewood(柴火_1 堆放)
# firewood(堆放) 空手右键 -> firewood_2 + 掉落1个柴火_2(掉落物, 不进背包)
# ============================================================================
FIREWOOD_RULES = [
{"source": "rtdd:firewood_2", "item": "rtdd:firewood",
"target": "rtdd:firewood", "consume": 1, "tip": "§a堆放柴火"},
{"source": "rtdd:firewood", "item": None,
"target": "rtdd:firewood_2",
"dropItem": [{"name": "rtdd:firewood_2", "count": 1}],
"tip": "§a取走柴火"},
]
# ============================================================================
# 二、葡萄藤取葡萄(右键)
# grapebushes_2(成熟) 空手右键 -> grapebushes_1 + 掉落3个葡萄
# ============================================================================
GRAPE_HARVEST = {
"source": "rtdd:grapebushes_2", "item": None,
"target": "rtdd:grapebushes_1",
"dropItem": [{"name": "rtdd:grape", "count": 3}],
"tip": "§a取出了3个葡萄",
}
# ============================================================================
# 三、水稻收获(左键破坏掉落, 类似原版作物)
# 水稻方块被左键破坏 -> 掉落稻谷; 成熟(riceseedlingsd)额外掉大米
# ============================================================================
RICE_BLOCKS = [
"rtdd:riceseedlingsb", # 刚种下
"rtdd:riceseedlingsc", # 生长中
"rtdd:riceseedlingsd", # 成熟
]
RICE_SEED_ITEM = "rtdd:rice_seeds" # 破坏掉落稻谷
RICE_CROP_ITEM = "rtdd:brownrice" # 成熟额外掉落大米
# 汇总: 乡野自然右键切换规则
NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST]
# ============================================================================
# 四、计时转换 (果树结果 / 葡萄藤生长 / 水稻生长, 均 autoStart 自动生长)
# ============================================================================
NATURAL_TIMERS = [
# 苹果树: 树叶 -> 苹果形态1 -> 苹果形态2
{"source": "rtdd:apple_leaves", "target": "rtdd:apple_fruit_1",
"time": 60, "autoStart": True, "doneTip": "§e苹果树结果了"},
{"source": "rtdd:apple_fruit_1", "target": "rtdd:apple_fruit_3",
"time": 60, "autoStart": True, "doneTip": "§e苹果熟了"},
# 桃树: 树叶 -> 桃子一个 -> 桃子两个
{"source": "rtdd:peach_leaves", "target": "rtdd:b_173",
"time": 60, "autoStart": True, "doneTip": "§e桃树结果了"},
{"source": "rtdd:b_173", "target": "rtdd:b_176",
"time": 60, "autoStart": True, "doneTip": "§e桃子熟了"},
# 橘树: 树叶 -> 橘子形态一 -> 形态二 -> 形态三
{"source": "rtdd:orange_leaves", "target": "rtdd:tangerine_0",
"time": 60, "autoStart": True, "doneTip": "§e橘树结果了"},
{"source": "rtdd:tangerine_0", "target": "rtdd:tangerine_1",
"time": 60, "autoStart": True},
{"source": "rtdd:tangerine_1", "target": "rtdd:tangerine_2",
"time": 60, "autoStart": True, "doneTip": "§e橘子熟了"},
# 葡萄藤: 藤_1 -> 藤_2
{"source": "rtdd:grapebushes_1", "target": "rtdd:grapebushes_2",
"time": 180, "autoStart": True, "doneTip": "§e葡萄熟了"},
# 水稻: 刚种下 -> 生长中 -> 成熟
{"source": "rtdd:riceseedlingsb", "target": "rtdd:riceseedlingsc",
"time": 120, "autoStart": True},
{"source": "rtdd:riceseedlingsc", "target": "rtdd:riceseedlingsd",
"time": 120, "autoStart": True, "doneTip": "§e水稻成熟了"},
]
# ============================================================================
# 五、水稻种植(手持稻谷右键耕地, 在耕地上方放置水稻刚种下)
# ============================================================================
RICE_PLANT = {
"item": "rtdd:rice_seeds", # 稻谷(手持)
"surface": "minecraft:farmland", # 必须右键原版耕地
"target": "rtdd:riceseedlingsb", # 放置水稻刚种下
"consume": 1,
"tip": "§a种下水稻",
}