158 lines
6.4 KiB
Python
158 lines
6.4 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
================================================================================
|
|
寿司(xy_sushi)转化规则数据
|
|
================================================================================
|
|
统一管理"寿司"分类下的转化规则常量。只被 ShousiService 读取,
|
|
FeatureDispatcher 通过方块名/物品名集合路由到对应服务。
|
|
|
|
【实现范围(对应 寿司转化关系.txt)】
|
|
基础组 : 干海带 + 手持饭团右键 -> 干海带(加饭团), 消耗4个饭团
|
|
加鱼 : 干海带(加饭团) + 手持鱼右键 -> 对应寿司(加鱼), 消耗1个
|
|
卷制 : 空手右键逐级卷制(四级), 鲑鱼链无"卷_3"标注(成品卷=链尾)
|
|
切块 : 手持菜刀右键卷寿司两次 -> 寿司块(三个)
|
|
手握组 : 手握普通寿司 + 手持鱼右键 -> 手握X寿司(一个);
|
|
手持 手握X寿司(一个) 右键 逐级堆叠到(三个)
|
|
寿司堆组: 手持卷寿司右键 -> 寿司堆(两个) -> 寿司堆(三个);
|
|
空手右键递减取走, 退回卷寿司
|
|
饭团放置: 手持饭团右键方块表面 -> 在表面上方放置 手握普通寿司
|
|
(txt 第18条 todo, 手握组起点)
|
|
|
|
【不实现(txt 明确"后续实现")】
|
|
- 吃: 寿司块递减(5/9/13)、手握递减(14~17) 的空手右键吃, 后续实现
|
|
- 饭团来源: 汤锅熟米饭捏饭团(属 汤锅 分类, 本次不做)
|
|
================================================================================
|
|
"""
|
|
|
|
# ---- 物品 ----
|
|
RICE_BALL = "rtdd:rice_balls" # 饭团
|
|
CLEAVER_ITEM = "rtdd:cleaver" # 菜刀(刀)
|
|
|
|
# ---- 鱼物品(手持原料) ----
|
|
FISH_COD = "minecraft:cod" # 鳕鱼
|
|
FISH_SALMON = "minecraft:salmon" # 鲑鱼
|
|
FISH_TROPICAL = "minecraft:tropical_fish" # 热带鱼
|
|
FISH_SQUID = "rtdd:rawsquidwhiskersr" # 鱿鱼须(游戏中代表鱿鱼)
|
|
|
|
# ---- 干海带 ----
|
|
NORI_0 = "rtdd:sushi_0" # 干海带
|
|
NORI_1 = "rtdd:sushi_1" # 干海带(加饭团), 游戏内名"干海带(加米)"
|
|
|
|
# ---- 手握普通寿司(手握组起点) ----
|
|
NIGIRI_BASE = "rtdd:nigirisushi"
|
|
|
|
# ============================================================================
|
|
# 四组鱼寿司
|
|
# roll : 卷链(加鱼 -> 卷_1 -> 卷_2 -> 卷_3 -> 卷_4/成品卷), 空手右键逐级
|
|
# cubes : 切块得到的 寿司块(三个)
|
|
# nigiri1/2/3 : 手握X寿司(一个/两个/三个)
|
|
# pile2/3: 寿司堆(X_两个/X_三个)
|
|
# ============================================================================
|
|
SUSHI_GROUPS = [
|
|
{
|
|
"key": "cod",
|
|
"fish": FISH_COD,
|
|
"roll": ["rtdd:codsushi_1", "rtdd:codsushi_2",
|
|
"rtdd:codsushi_3", "rtdd:codsushi_4", "rtdd:codsushi_5"],
|
|
"cubes": "rtdd:codsushi_6",
|
|
"nigiri1": "rtdd:nigirisushifishcod",
|
|
"nigiri2": "rtdd:nigirisushicod_2",
|
|
"nigiri3": "rtdd:nigirisushicod_3",
|
|
"pile2": "rtdd:sushipile_2",
|
|
"pile3": "rtdd:sushipile_3",
|
|
"addTip": None,
|
|
"rollTip": None,
|
|
"cutTip": None,
|
|
"nigiriTip": None,
|
|
"pileTip": None,
|
|
"takeTip": None,
|
|
},
|
|
{
|
|
"key": "salmon",
|
|
"fish": FISH_SALMON,
|
|
"roll": ["rtdd:salmonsushi_1", "rtdd:salmonsushi_2",
|
|
"rtdd:salmonsushi_3", "rtdd:salmonsushi_4", "rtdd:salmonsushi_5"],
|
|
"cubes": "rtdd:salmonsushi_6",
|
|
"nigiri1": "rtdd:nigirisushifishsalmon_1",
|
|
"nigiri2": "rtdd:nigirisushisalnom_2",
|
|
"nigiri3": "rtdd:nigirisushisalnom_3",
|
|
"pile2": "rtdd:sushipile_4",
|
|
"pile3": "rtdd:sushipile_5",
|
|
"addTip": None,
|
|
"rollTip": None,
|
|
"cutTip": None,
|
|
"nigiriTip": None,
|
|
"pileTip": None,
|
|
"takeTip": None,
|
|
},
|
|
{
|
|
"key": "fish",
|
|
"fish": FISH_TROPICAL,
|
|
"roll": ["rtdd:fishsushi_1", "rtdd:fishsushi_2",
|
|
"rtdd:fishsushi_3", "rtdd:fishsushi_4", "rtdd:fishsushi_5"],
|
|
"cubes": "rtdd:fishmonsushi_6",
|
|
"nigiri1": "rtdd:nigirisushifish_1",
|
|
"nigiri2": "rtdd:nigirisushifish_2",
|
|
"nigiri3": "rtdd:nigirisushifish_3",
|
|
"pile2": "rtdd:sushipile_0",
|
|
"pile3": "rtdd:sushipile_1",
|
|
"addTip": None,
|
|
"rollTip": None,
|
|
"cutTip": None,
|
|
"nigiriTip": None,
|
|
"pileTip": None,
|
|
"takeTip": None,
|
|
},
|
|
{
|
|
"key": "squid",
|
|
"fish": FISH_SQUID,
|
|
"roll": None, "cubes": None, "pile2": None, "pile3": None,
|
|
"nigiri1": "rtdd:squid_sushi",
|
|
"nigiri2": "rtdd:squidsushi_2",
|
|
"nigiri3": "rtdd:squidsushi_3",
|
|
"addTip": None, "rollTip": None, "cutTip": None,
|
|
"nigiriTip": None,
|
|
"pileTip": None, "takeTip": None,
|
|
},
|
|
]
|
|
|
|
# 干海带铺饭团消耗数(基础组)
|
|
NORI_RICE_CONSUME = 4
|
|
|
|
# 切块需要菜刀右击次数
|
|
CUT_COUNT = 2
|
|
|
|
# 手握堆叠/寿司堆 每次消耗手持数
|
|
STACK_CONSUME = 1
|
|
|
|
# ============================================================================
|
|
# 手持物品右键"寿司方块本体"的转换对(block + item)
|
|
# 寿司的规则都内联在 ShousiService 里, 不像其它分类写在 *Data 的 SWITCH_RULES,
|
|
# 客户端拦截白名单无法自动派生 -> 手持饭团/鱼右键寿司方块时会被当成"吃/放置"
|
|
# (饭团被吃、鱼被放成死鱼), 转换不触发。
|
|
# 这里按 SUSHI_GROUPS 反向导出一份 (block, item) 表, 供 InterceptData 汇入
|
|
# BLOCKUSE_CANCEL, 使客户端命中后显式发 BlockUseRequest, 由服务端
|
|
# ShousiService.handleBlockUse 执行转换。
|
|
# ============================================================================
|
|
def _build_shousi_switches():
|
|
pairs = [{"block": NORI_0, "item": RICE_BALL}] # 基础组: 干海带 + 饭团
|
|
for g in SUSHI_GROUPS:
|
|
fish = g.get("fish")
|
|
roll = g.get("roll")
|
|
# 手握: 手握普通寿司 + 鱼
|
|
pairs.append({"block": NIGIRI_BASE, "item": fish})
|
|
# 手握堆叠: 手持 手握X(一个) 右键 手握X(一/两个)
|
|
pairs.append({"block": g["nigiri1"], "item": g["nigiri1"]})
|
|
pairs.append({"block": g["nigiri2"], "item": g["nigiri1"]})
|
|
if roll:
|
|
# 加鱼: 干海带(加饭团) + 鱼
|
|
pairs.append({"block": NORI_1, "item": fish})
|
|
# 寿司堆: 手持 卷寿司(链尾) 右键 卷寿司/寿司堆(两个)
|
|
pairs.append({"block": roll[-1], "item": roll[-1]})
|
|
if g.get("pile2"):
|
|
pairs.append({"block": g["pile2"], "item": roll[-1]})
|
|
return pairs
|
|
|
|
|
|
SHOUSI_SWITCHES = _build_shousi_switches()
|