# -*- coding: utf-8 -*- """ ================================================================================ 家具家私分类转换规则数据 ================================================================================ 统一管理"家具家私"(xy_furniture) 分类下的全部【右键切换型】转换规则: 箭桶、水槽、盘子架、书柜、厨具架、古式唱片机、垃圾桶。 全部为即时右键转换, 无计时, 不需要 TimerService。 由 xiangyemod/jiaju/service/FurnitureService 处理, 注册到 FeatureDispatcher。 【规则字段说明】 source: 被右键的源方块 item: 手持物品名; None=空手; "*music_disc"=任意原版唱片; "*arrow"=任意箭; "*any"=任意非空物品 target: 转换成的目标方块 consume: 消耗数量(默认0, 即不消耗) clearHand: True=清空主手全部物品(垃圾桶扔垃圾) giveItem: 取回/取水时给玩家背包的物品名(直接进背包) dropItem: 以掉落物形式给的物品 [{"name": "xx", "count": N}] record: "count"=记录一种物品+数量(箭桶) / "stack"=后放先取堆栈(书柜), 记录写入方块实体数据(rtdd_swt/rtdd_swc/rtdd_swi/rtdd_swa/rtdd_sws), 退出重进不丢 maxCount: record 类型最大容量(箭桶32 / 书柜13) arrowMode:"store"=箭桶存箭(批量) / "retrieve"=箭桶取箭(一次性全取) discPut: True=唱片机放入时把唱片写入方块实体(取回时原样返还) discGet: True=唱片机取回时从方块实体读出唱片并掉落 tip: 转换成功提示 ================================================================================ """ # ============================================================ # 一、箭桶 (arrowbarrel_0 无箭 / arrowbarrel_1 有箭) # 存箭: 手持箭(普通箭/药水箭)右键, 批量存入手中所有箭, 至多32只, # 只存一种箭(类型+药水效果aux不符不能混存), count记录 # 取箭: 空手右键, 一次性取回方块记录的全部箭 # ============================================================ ARROWBARREL_RULES = [ {"source": "rtdd:arrowbarrel_0", "item": "*arrow", "target": "rtdd:arrowbarrel_1", "arrowMode": "store", "record": "count", "maxCount": 32, "tip": "§a已存入箭"}, {"source": "rtdd:arrowbarrel_1", "item": None, "target": "rtdd:arrowbarrel_0", "arrowMode": "retrieve", "record": "count", "tip": "§a取回了箭"}, ] # ============================================================ # 二、水槽 (flume_0~5) # 加水: 空手右键空槽 -> 满水 # 取水: 手持空水桶右键满水 -> 空槽 + 给装满水的水桶 # 放脏盘子(脏盘子 rtdd:plate_0a): 满水起, 逐个放入最多4个 # 取脏盘子: 空手右键逐个取回 # ============================================================ FLUME_RULES = [ # 加水/取水 {"source": "rtdd:flume_0", "item": None, "target": "rtdd:flume_1", "tip": "§a水槽加满了水"}, {"source": "rtdd:flume_1", "item": "minecraft:bucket", "target": "rtdd:flume_0", "consume": 1, "giveItem": "minecraft:water_bucket", "tip": "§a取走了水, 水桶装满水"}, # 放脏盘子(需满水) {"source": "rtdd:flume_1", "item": "rtdd:plate_0a", "target": "rtdd:flume_2", "consume": 1, "tip": "§a放入1个脏盘子"}, {"source": "rtdd:flume_2", "item": "rtdd:plate_0a", "target": "rtdd:flume_3", "consume": 1, "tip": "§a放入1个脏盘子"}, {"source": "rtdd:flume_3", "item": "rtdd:plate_0a", "target": "rtdd:flume_4", "consume": 1, "tip": "§a放入1个脏盘子"}, {"source": "rtdd:flume_4", "item": "rtdd:plate_0a", "target": "rtdd:flume_5", "consume": 1, "tip": "§a放入1个脏盘子"}, # 取脏盘子 {"source": "rtdd:flume_5", "item": None, "target": "rtdd:flume_4", "giveItem": "rtdd:plate_0a", "tip": "§a取回1个脏盘子"}, {"source": "rtdd:flume_4", "item": None, "target": "rtdd:flume_3", "giveItem": "rtdd:plate_0a", "tip": "§a取回1个脏盘子"}, {"source": "rtdd:flume_3", "item": None, "target": "rtdd:flume_2", "giveItem": "rtdd:plate_0a", "tip": "§a取回1个脏盘子"}, {"source": "rtdd:flume_2", "item": None, "target": "rtdd:flume_1", "giveItem": "rtdd:plate_0a", "tip": "§a取回1个脏盘子"}, ] # ============================================================ # 三、盘子架 (trayracks_1 空 ~ trayracks_6 五个) # 放盘子(盘子 rtdd:plate_0): 逐个放入最多5个 # 取盘子: 空手右键逐个取回 # ============================================================ TRAYRACKS_RULES = [ {"source": "rtdd:trayracks_1", "item": "rtdd:plate_0", "target": "rtdd:trayracks_2", "consume": 1, "tip": "§a放上1个盘子"}, {"source": "rtdd:trayracks_2", "item": "rtdd:plate_0", "target": "rtdd:trayracks_3", "consume": 1, "tip": "§a放上1个盘子"}, {"source": "rtdd:trayracks_3", "item": "rtdd:plate_0", "target": "rtdd:trayracks_4", "consume": 1, "tip": "§a放上1个盘子"}, {"source": "rtdd:trayracks_4", "item": "rtdd:plate_0", "target": "rtdd:trayracks_5", "consume": 1, "tip": "§a放上1个盘子"}, {"source": "rtdd:trayracks_5", "item": "rtdd:plate_0", "target": "rtdd:trayracks_6", "consume": 1, "tip": "§a放上1个盘子"}, {"source": "rtdd:trayracks_6", "item": None, "target": "rtdd:trayracks_5", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"}, {"source": "rtdd:trayracks_5", "item": None, "target": "rtdd:trayracks_4", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"}, {"source": "rtdd:trayracks_4", "item": None, "target": "rtdd:trayracks_3", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"}, {"source": "rtdd:trayracks_3", "item": None, "target": "rtdd:trayracks_2", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"}, {"source": "rtdd:trayracks_2", "item": None, "target": "rtdd:trayracks_1", "giveItem": "rtdd:plate_0", "tip": "§a取回1个盘子"}, ] # ============================================================ # 四、书柜 (bookcase 系列, 后放先取, 至多13本) # 放书(书 minecraft:book / 附魔书 minecraft:enchanted_book): 逐个放入, # stack记录完整物品信息(附魔书附魔不丢) # 取书: 空手右键, 后放先取(LIFO) # 方块链: 书柜_1(空)=bookcase, 书柜_2(1本)=bookcase_12, 书柜_3(2本)=bookcase_11, # 书柜_4(3本)=bookcase_10, 书柜_5(4本)=bookcase_9, 书柜_6(5本)=bookcase_8, # 书柜_7(6本)=bookcase_7, 书柜_8(7本)=bookcase_6, 书柜_9(8本)=bookcase_5, # 书柜_10(9本)=bookcase_4, 书柜_11(10本)=b_196, 书柜_12(11本)=bookcase_3, # 书柜_13(12本)=bookcase_2, 书柜_14(13本)=bookcase_1 # ============================================================ _BOOKCASE_CHAIN = [ "rtdd:bookcase", # 书柜_1(空) "rtdd:bookcase_12", # 书柜_2(1本) "rtdd:bookcase_11", # 书柜_3(2本) "rtdd:bookcase_10", # 书柜_4(3本) "rtdd:bookcase_9", # 书柜_5(4本) "rtdd:bookcase_8", # 书柜_6(5本) "rtdd:bookcase_7", # 书柜_7(6本) "rtdd:bookcase_6", # 书柜_8(7本) "rtdd:bookcase_5", # 书柜_9(8本) "rtdd:bookcase_4", # 书柜_10(9本) "rtdd:b_196", # 书柜_11(10本) "rtdd:bookcase_3", # 书柜_12(11本) "rtdd:bookcase_2", # 书柜_13(12本) "rtdd:bookcase_1", # 书柜_14(13本) ] BOOKCASE_RULES = [] # 放入: 第 i 级 -> 第 i+1 级, 书/附魔书, 消耗1, stack记录 for _i in range(len(_BOOKCASE_CHAIN) - 1): _src, _dst = _BOOKCASE_CHAIN[_i], _BOOKCASE_CHAIN[_i + 1] BOOKCASE_RULES.append({ "source": _src, "item": "minecraft:book", "target": _dst, "consume": 1, "record": "stack", "maxCount": 13, "tip": "§a放入1本书", }) BOOKCASE_RULES.append({ "source": _src, "item": "minecraft:enchanted_book", "target": _dst, "consume": 1, "record": "stack", "maxCount": 13, "tip": "§a放入1本附魔书", }) # 取回: 第 i 级 -> 第 i-1 级, 空手, 后放先取 for _i in range(len(_BOOKCASE_CHAIN) - 1, 0, -1): _src, _dst = _BOOKCASE_CHAIN[_i], _BOOKCASE_CHAIN[_i - 1] BOOKCASE_RULES.append({ "source": _src, "item": None, "target": _dst, "record": "stack", "tip": "§a取回了书", }) # ============================================================ # 五、厨具架 (kitchenwarerack, 至多挂2件, 方块状态即组合, 纯切换) # 可放: 锅铲(spatula) / 锅勺(potandspoon) / 菜刀(cleaver) / 炒锅(wok) # ============================================================ KITCHENRACK_RULES = [ # ---- 放入 (空架 -> 单件) ---- {"source": "rtdd:kitchenwarerack", "item": "rtdd:spatula", "target": "rtdd:kitchenwareracka_1", "consume": 1, "tip": "§a放上了锅铲"}, {"source": "rtdd:kitchenwarerack", "item": "rtdd:potandspoon", "target": "rtdd:kitchenwarerackb_1", "consume": 1, "tip": "§a放上了锅勺"}, {"source": "rtdd:kitchenwarerack", "item": "rtdd:cleaver", "target": "rtdd:kitchenwarerackd_1", "consume": 1, "tip": "§a放上了菜刀"}, {"source": "rtdd:kitchenwarerack", "item": "rtdd:wok", "target": "rtdd:kitchenwarerackc_1", "consume": 1, "tip": "§a放上了炒锅"}, # ---- 放入 (单件 -> 双件/组合) ---- {"source": "rtdd:kitchenwareracka_1", "item": "rtdd:spatula", "target": "rtdd:kitchenwareracka_2", "consume": 1, "tip": "§a再放上一把锅铲"}, {"source": "rtdd:kitchenwareracka_1", "item": "rtdd:potandspoon", "target": "rtdd:kitchenwareracka_3", "consume": 1, "tip": "§a放上了锅勺"}, {"source": "rtdd:kitchenwarerackb_1", "item": "rtdd:potandspoon", "target": "rtdd:kitchenwarerackb_2", "consume": 1, "tip": "§a再放上一把锅勺"}, {"source": "rtdd:kitchenwarerackc_1", "item": "rtdd:cleaver", "target": "rtdd:kitchenwarerackc_2", "consume": 1, "tip": "§a放上了菜刀"}, {"source": "rtdd:kitchenwarerackd_1", "item": "rtdd:cleaver", "target": "rtdd:kitchenwarerackd_3", "consume": 1, "tip": "§a再放上一把菜刀"}, {"source": "rtdd:kitchenwarerackd_1", "item": "rtdd:spatula", "target": "rtdd:kitchenwarerackd_2", "consume": 1, "tip": "§a放上了锅铲"}, {"source": "rtdd:kitchenwarerackd_1", "item": "rtdd:potandspoon", "target": "rtdd:kitchenwarerackd_4", "consume": 1, "tip": "§a放上了锅勺"}, # ---- 取回 (空手右键, 掉落对应厨具) ---- {"source": "rtdd:kitchenwareracka_1", "item": None, "target": "rtdd:kitchenwarerack", "dropItem": [{"name": "rtdd:spatula", "count": 1}], "tip": "§a取回了锅铲"}, {"source": "rtdd:kitchenwareracka_2", "item": None, "target": "rtdd:kitchenwareracka_1", "dropItem": [{"name": "rtdd:spatula", "count": 1}], "tip": "§a取回了一把锅铲"}, {"source": "rtdd:kitchenwareracka_3", "item": None, "target": "rtdd:kitchenwareracka_1", "dropItem": [{"name": "rtdd:potandspoon", "count": 1}], "tip": "§a取回了锅勺"}, {"source": "rtdd:kitchenwarerackb_1", "item": None, "target": "rtdd:kitchenwarerack", "dropItem": [{"name": "rtdd:potandspoon", "count": 1}], "tip": "§a取回了锅勺"}, {"source": "rtdd:kitchenwarerackb_2", "item": None, "target": "rtdd:kitchenwarerackb_1", "dropItem": [{"name": "rtdd:potandspoon", "count": 1}], "tip": "§a取回了一把锅勺"}, {"source": "rtdd:kitchenwarerackc_1", "item": None, "target": "rtdd:kitchenwarerack", "dropItem": [{"name": "rtdd:wok", "count": 1}], "tip": "§a取回了炒锅"}, {"source": "rtdd:kitchenwarerackc_2", "item": None, "target": "rtdd:kitchenwarerackc_1", "dropItem": [{"name": "rtdd:cleaver", "count": 1}], "tip": "§a取回了菜刀"}, {"source": "rtdd:kitchenwarerackd_1", "item": None, "target": "rtdd:kitchenwarerack", "dropItem": [{"name": "rtdd:cleaver", "count": 1}], "tip": "§a取回了菜刀"}, {"source": "rtdd:kitchenwarerackd_2", "item": None, "target": "rtdd:kitchenwarerackd_1", "dropItem": [{"name": "rtdd:spatula", "count": 1}], "tip": "§a取回了锅铲"}, {"source": "rtdd:kitchenwarerackd_3", "item": None, "target": "rtdd:kitchenwarerackd_1", "dropItem": [{"name": "rtdd:cleaver", "count": 1}], "tip": "§a取回了一把菜刀"}, {"source": "rtdd:kitchenwarerackd_4", "item": None, "target": "rtdd:kitchenwarerackd_1", "dropItem": [{"name": "rtdd:potandspoon", "count": 1}], "tip": "§a取回了锅勺"}, ] # ============================================================ # 六、古式唱片机 (b_108 无碟 / b_109 有碟) # 放入: 手持任意原版唱片 -> 有碟, 消耗1, 记录唱片(rtdd_disc) # 取回: 空手右键 -> 无碟 + 原样返还唱片 # 注: 放入后播放曲目为 todo, 后续实现 # ============================================================ RECORDPLAYER_RULES = [ {"source": "rtdd:b_108", "item": "*music_disc", "target": "rtdd:b_109", "consume": 1, "discPut": True, "tip": "§a放入了唱片"}, {"source": "rtdd:b_109", "item": None, "target": "rtdd:b_108", "discGet": True, "tip": "§a取回了唱片"}, ] # ============================================================ # 七、垃圾桶 (storage_buckets 关闭 / rubbish_bin_2 打开 / b_160 有垃圾) # 打开: 右键垃圾桶(空手/手持均可) -> 打开桶盖(不消耗) # 扔垃圾: 打开时手持任意物品右键 -> 有垃圾 + 清空主手 # 关闭: 右键(空手/手持均可) 打开/有垃圾 -> 关闭 # ============================================================ TRASHBIN_RULES = [ {"source": "rtdd:storage_buckets", "item": None, "target": "rtdd:rubbish_bin_2", "tip": "§a垃圾桶已打开"}, {"source": "rtdd:storage_buckets", "item": "*any", "target": "rtdd:rubbish_bin_2", "tip": "§a垃圾桶已打开"}, {"source": "rtdd:rubbish_bin_2", "item": None, "target": "rtdd:storage_buckets", "tip": "§a垃圾桶已关闭"}, {"source": "rtdd:rubbish_bin_2", "item": "*any", "target": "rtdd:b_160", "clearHand": True, "tip": "§a已丢入垃圾桶"}, {"source": "rtdd:b_160", "item": None, "target": "rtdd:storage_buckets", "tip": "§a垃圾桶已关闭"}, {"source": "rtdd:b_160", "item": "*any", "target": "rtdd:storage_buckets", "tip": "§a垃圾桶已关闭"}, ] # ============================================================ # 汇总: 家具家私全部右键转换规则 # ============================================================ FURNITURE_SWITCHES = (ARROWBARREL_RULES + FLUME_RULES + TRAYRACKS_RULES + BOOKCASE_RULES + KITCHENRACK_RULES + RECORDPLAYER_RULES + TRASHBIN_RULES)