115 lines
6.2 KiB
Python
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)。引擎原生支持"手持稻谷右键耕地"种植。
|
|
# ============================================================================ |