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

115 lines
6.2 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个葡萄",
}
# 葡萄种植: 手持葡萄右键支杆 -> 葡萄藤_1(之后按原版 tick 随机生长, 无提示)
GRAPE_PLANT = {
"source": "rtdd:b_34", "item": "rtdd:grape",
"target": "rtdd:grapebushes_1", "consume": 1,
}
# ============================================================================
# 三、水稻收获(左键破坏掉落, 类似原版作物)
# 水稻方块被左键破坏 -> 掉落稻谷; 成熟(riceseedlingsd)额外掉大米
# ============================================================================
RICE_BLOCKS = [
"rtdd:riceseedlingsb", # 刚种下
"rtdd:riceseedlingsc", # 生长中
"rtdd:riceseedlingsd", # 成熟
]
RICE_SEED_ITEM = "rtdd:rice_seeds" # 破坏掉落稻谷
RICE_CROP_ITEM = "rtdd:brownrice" # 成熟额外掉落大米
# 水稻/葡萄藤 生长: 都用"原版 tick 概率生长"(每 block tick 一定概率长大一级) + 骨粉右键
# 葡萄藤生长: 走"原版 tick 概率生长"代码(每 block tick 一定概率长大一级) + 骨粉右键。
# 稻谷(rice_seeds)已改用物品 JSON 的 minecraft:seed + 方块 base_block=custom_crop_block
# 的 netease:transform 由原版随机刻驱动生长(见 netease_blocks/riceseedlingsb,c.json),
# 不在此代码生长链里, 避免双重驱动。
GROW_CHAIN = {
"rtdd:grapebushes_1": "rtdd:grapebushes_2", # 葡萄藤_1 -> _2
} # 生长链: 当前方块 -> 长大一级后的方块, 供代码 tick 概率生长 + 骨粉催熟
GROW_PROB = 0.0003 # 每 block tick 长大一级的概率(原版随机式; 每级≈3分钟, 满熟数分钟~十来分钟)
BONE_MEAL = "minecraft:bone_meal" # 骨粉(右键对生长链方块催熟1级)
# 汇总: 乡野自然右键切换规则
NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST, GRAPE_PLANT]
# ============================================================================
# 四、计时转换 (果树结果 / 葡萄藤生长 / 水稻生长, 均 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橘子熟了"},
# 水稻/葡萄藤 已改用"原版 tick 概率生长(每block tick随机长大一级)+骨粉",
# 见 NaturalTimerService._growBlockProcess / GROW_CHAIN, 不再走这里的秒式时长, 故都不在此
]
# ============================================================================
# 五、水稻种植:已交由物品定义 JSON 的 minecraft:seed 组件处理
# (netease_items_beh/rtdd_rice_seeds.json: plant_at=[farmland],
# crop_result=rtdd:riceseedlingsb)。引擎原生支持"手持稻谷右键耕地"种植。
# ============================================================================