========================================
【家具家私】(xy_furniture) 转化关系
========================================
说明:
- 家具家私分类方块: 箭桶、水槽、盘子架、碗柜、书柜、药水架、厨具架、唱片机、
  垃圾桶、壁炉 系列
- 有交互转换的: 箭桶(存/取箭)、水槽(加水/取水/放洗脏盘/取脏盘)、
  盘子架(放/取盘)、碗柜(放/取木碗)、书柜(放/取书)、药水架(放/取药水)、
  厨具架(放/取厨具)、壁炉(加柴/点燃)
- 【方块存储物品实现】(FurnitureService 两种记录, 写入方块实体数据, 退出重进不丢):
    ① count记录(箭桶): 记录一种物品+数量, 字段 rtdd_swt=count / rtdd_swc=数量 /
       rtdd_swi=物品名 / rtdd_swa=aux值
    ② stack记录(书柜/药水架): 后放先取堆栈, 记录物品名+aux(药水)或附魔ench(书),
       字段 rtdd_swt=stack / rtdd_sws=堆栈(原始扁平列表, 不存引擎NBT编码的userData)
- 【实现状态】: 箭桶/水槽/盘子架/碗柜/书柜/药水架/厨具架/古式唱片机/垃圾桶/壁炉
  全部已实现
  (统一由 xiangyemod/jiaju/FurnitureService 处理, 注册到 FeatureDispatcher;
  旧 BlockSwitchService 已废弃); 唱片播放曲目 待后续实现
- 【左键破坏掉落】: 书柜/药水架/厨具架这类"存了东西"的方块被打碎时, 掉 空方块本体
  + 全部存储物品(附魔/药水效果保留); 与售卖盒不同: 售卖盒破坏重放仍可右键取物,
  这类方块破坏后记录随方块消失, 重放取不到
- 其余为静态装饰家具, 无转换

========================================
一、箭桶(存箭/取箭)
   存储实现: count记录(rtdd_swt=count), 记录一种箭的类型+数量
========================================
1. 箭桶_0(箭桶无箭) -> 箭桶_1(箭桶有箭)
转换条件:[手持 箭(普通箭/药水箭) 右键 进行转换, 批量存入手中所有箭, 至多32只,
          方块记录是什么箭多少数量]
机制:
- 手持箭右键, 批量存入手中所有箭, 最多32只(maxCount=32)
  (如手持64只毒箭右键→存32只手上剩32只; 手持31只→存31只手上清空)
- 只能存一种箭: 方块内已有箭且与手中箭类型不同(物品名 minecraft:arrow /
  minecraft:tipped_arrow 及药水效果aux) 时不能混存, 右键无反应
- 记录: 方块实体数据 rtdd_swt=count / rtdd_swc=数量 / rtdd_swi=箭类型 /
  rtdd_swa=药水效果aux, 退出重进不丢

2. 箭桶_1(箭桶有箭) -> 箭桶_0(箭桶无箭)
转换条件:[右键 进行转换, 一次性取回方块记录的全部箭(类型+数量)]
机制: 空手右键, 按记录一次性取回全部箭(数量+类型+药水效果aux), 并清空记录

========================================
二、水槽(加水/取水/放洗脏盘/取脏盘)
========================================
3. 水槽_1(水槽_空) -> 水槽_2(水槽_满水)
转换条件:[右键 进行转换(加水)]
机制: 空手右键, 加水

4. 水槽_2(水槽_满水) -> 水槽_1(水槽_空)
转换条件:[手持 水桶 右键 进行转换, 消耗空水桶, 获得装满水的水桶]
机制: 手持空水桶右键, 取水, 消耗空水桶返还装满水的水桶(minecraft:water_bucket)

4a. 水槽_2(水槽_满水) -> 水槽_1(水槽_空)
转换条件:[右键 进行转换(放水)]
机制: 空手右键, 直接把水放掉, 回到空槽(不放水桶取水)

5. 水槽_2(满水) + 脏盘子 -> 水槽_3(一个脏盘子)
转换条件:[手持 脏盘子 右键 进行转换, 脏盘子数量减少]
机制: 手持脏盘子右键, 消耗1个, 放入脏盘子(需水槽有水才能放)

6. 水槽_3(一个) -> 水槽_4(两个)
转换条件:[手持 脏盘子 右键 进行转换, 脏盘子数量减少]
机制: 手持脏盘子右键, 消耗1个, 放入第二个

7. 水槽_4(两个) -> 水槽_5(三个)
转换条件:[手持 脏盘子 右键 进行转换, 脏盘子数量减少]
机制: 手持脏盘子右键, 消耗1个, 放入第三个

8. 水槽_5(三个) -> 水槽_6(四个)
转换条件:[手持 脏盘子 右键 进行转换, 脏盘子数量减少]
机制: 手持脏盘子右键, 消耗1个, 放入第四个

9. 水槽_6(四个) -> 水槽_5(三个)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回1个盘子

10. 水槽_5(三个) -> 水槽_4(两个)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回1个盘子

11. 水槽_4(两个) -> 水槽_3(一个)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回1个盘子

12. 水槽_3(一个) ->  水槽_1(水槽_空)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回最后1个盘子

========================================
三、盘子架(放盘子/取盘子)
========================================
13. 盘子架_1(空) -> 盘子架_2(一个)
转换条件:[手持 盘子 右键 进行转换, 盘子数量减少]
机制: 手持盘子右键, 消耗1个, 放上盘子

14. 盘子架_2(一个) -> 盘子架_3(俩个)
转换条件:[手持 盘子 右键 进行转换, 盘子数量减少]
机制: 手持盘子右键, 消耗1个, 放第二个

15. 盘子架_3(俩个) -> 盘子架_4(三个)
转换条件:[手持 盘子 右键 进行转换, 盘子数量减少]
机制: 手持盘子右键, 消耗1个, 放第三个

16. 盘子架_4(三个) -> 盘子架_5(四个)
转换条件:[手持 盘子 右键 进行转换, 盘子数量减少]
机制: 手持盘子右键, 消耗1个, 放第四个

17. 盘子架_5(四个) -> 盘子架_6(五个)
转换条件:[手持 盘子 右键 进行转换, 盘子数量减少]
机制: 手持盘子右键, 消耗1个, 放第五个

18. 盘子架_6(五个) -> 盘子架_5(四个)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回1个盘子

19. 盘子架_5(四个) -> 盘子架_4(三个)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回1个盘子

20. 盘子架_4(三个) -> 盘子架_3(俩个)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回1个盘子

21. 盘子架_3(俩个) -> 盘子架_2(一个)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回1个盘子

22. 盘子架_2(一个) -> 盘子架_1(空)
转换条件:[右键 进行转换, 获得盘子]
机制: 空手右键, 取回最后1个盘子

========================================
三b、碗柜(放木碗/取木碗, 至多3个)【已实现】
========================================
- 可放物品: 木碗(rtdd:bowlasoup)
- 放碗: 手持木碗右键 碗柜(空/未满) → 消耗1个, 逐个放入, 最多3个
- 取碗: 空手右键 → 逐个取回(掉落物形式), 取回最后1个回到空碗柜
- 满柜: 手持木碗右键三个碗的碗柜 → 提示"碗柜已满", 拦截默认行为
- 方块链: 碗柜_空=cupboard_0, 碗柜_一个碗=cupboard_1,
          碗柜_两个碗=cupboard_2, 碗柜_三个碗=cupboard_3

23. 碗柜_0(空) -> 碗柜_1(一个碗)
转换条件:[手持 木碗 右键 进行转换, 木碗数量减少]
机制: 手持木碗右键, 消耗1个, 放入1个木碗

24. 碗柜_1(一个碗) -> 碗柜_2(两个碗)
转换条件:[手持 木碗 右键 进行转换, 木碗数量减少]
机制: 手持木碗右键, 消耗1个, 放入第二个

25. 碗柜_2(两个碗) -> 碗柜_3(三个碗)
转换条件:[手持 木碗 右键 进行转换, 木碗数量减少]
机制: 手持木碗右键, 消耗1个, 放入第三个

26. 碗柜_3(三个碗) 手持木碗右键
转换条件:[手持 木碗 右键]
机制: 提示"碗柜已满", 不消耗, 拦截默认行为

27. 碗柜_3(三个碗) -> 碗柜_2(两个碗)
转换条件:[右键 进行转换, 获得木碗]
机制: 空手右键, 取回1个木碗(掉落物)

28. 碗柜_2(两个碗) -> 碗柜_1(一个碗)
转换条件:[右键 进行转换, 获得木碗]
机制: 空手右键, 取回1个木碗(掉落物)

29. 碗柜_1(一个碗) -> 碗柜_0(空)
转换条件:[右键 进行转换, 获得木碗]
机制: 空手右键, 取回最后1个木碗(掉落物)

========================================
四、书柜(放书/取书, 后放先取, 至多13本)
   存储实现: stack记录(rtdd_swt=stack), 后放先取堆栈, 保留完整物品信息(含附魔userData)
========================================
23. 书柜_1(空) -> 书柜_2(1本)
转换条件:[手持 书/附魔书 右键 进行转换, 消耗1本]
机制: 手持书(普通书/附魔书)右键, 消耗1本, 放入1本

24. 书柜_2(1本) -> 书柜_3(2本) -> 书柜_4(3本) -> 书柜_5(4本) -> 书柜_6(5本) -> 书柜_7(6本)
   -> 书柜_8(7本) -> 书柜_9(8本) -> 书柜_10(9本) -> 书柜_11(10本) -> 书柜_12(11本)
   -> 书柜_13(12本) -> 书柜_14(13本)
转换条件:[手持 书/附魔书 右键 依次放入, 每本消耗1, 至多13本]
机制: 手持书右键逐本放入, 共13级; 方块记录完整物品信息(附魔书附魔不丢)
方块标识对应: 书柜_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

25. 书柜_14(13本) -> 书柜_13(12本) -> 书柜_12(11本) -> 书柜_11(10本) -> 书柜_10(9本)
   -> 书柜_9(8本) -> 书柜_8(7本) -> 书柜_7(6本) -> 书柜_6(5本) -> 书柜_5(4本)
   -> 书柜_4(3本) -> 书柜_3(2本) -> 书柜_2(1本) -> 书柜_1(空)
转换条件:[右键 进行转换, 后放先取, 取回书]
机制: 空手右键逐本取回, 后放先取(LIFO), 取回的书以掉落物形式掉在书柜前(不进背包),
     保留附魔(附魔以扁平ench字段存方块实体, 取回时重建userData, 退出重进词条不丢)

========================================
四b、药水架(放药水/取药水, 后放先取, 至多3瓶)【已实现】
========================================
- 从药物系统(xy_medicine)移至家具分类(xy_furniture)
- 可放药水: 任意药水(普通/喷溅/滞留 minecraft:potion / splash_potion / lingering_potion)
- 放入: 手持任意药水右键 药水架(空/未满) → 消耗1瓶, 记录药水名+aux(aux决定药水效果)
- 取回: 空手右键 → 后放先取(LIFO), 取回最后放入的那瓶药水(掉落物形式, 原样返还)
- 满架: 手持药水右键三瓶满的药水架 → 提示"已满", 拦截默认行为(防止误喝药水)
- 方块链: 药水架_1(空)=lotion_0, 药水架_2(一瓶)=lotion_1,
          药水架_3(两瓶)=lotion_2, 药水架_4(三瓶)=lotion_3

========================================
五、厨具架(放厨具/取厨具, 至多2件)【已实现】
========================================
- 可放厨具: 锅铲(rtdd:spatula)、锅勺(rtdd:potandspoon)、菜刀(rtdd:cleaver)、炒锅(rtdd:wok)
- 放入: 手持厨具右键 厨具架(空/未满) → 放入该厨具, 消耗1个, 厨具架形态变为对应组合
  (组合与放入顺序无关: 先放锅再放刀 == 先放刀再放锅, 都是 炒锅+菜刀)
- 取回: 空手右键 → 后放先取(LIFO), 取回最后放入的厨具, 形态退回剩余单件/空
  (创造模式等直接放置的"带厨具"厨具架, 无记录时按方块状态推断厨具, 同样可右键取回)
- 厨具架方块状态(方块名称即组合, 一块最多挂2件):
    kitchenwarerack    = 厨具架(空)
    kitchenwareracka_1 = 厨具架(单锅铲)      ← 放1把锅铲
    kitchenwareracka_2 = 厨具架(双锅铲)      ← 单锅铲 + 锅铲
    kitchenwareracka_3 = 厨具架(锅铲+锅勺)   ← 单锅铲 + 锅勺
    kitchenwarerackb_1 = 厨具架(单锅勺)      ← 放1把锅勺
    kitchenwarerackb_2 = 厨具架(双锅勺)      ← 单锅勺 + 锅勺
    kitchenwarerackc_1 = 厨具架(单炒锅)      ← 放1口炒锅
    kitchenwarerackc_2 = 厨具架(炒锅+菜刀)   ← 单炒锅 + 菜刀
    kitchenwarerackd_1 = 厨具架(单菜刀)      ← 放1把菜刀
    kitchenwarerackd_2 = 厨具架(菜刀+锅铲)   ← 单菜刀 + 锅铲
    kitchenwarerackd_3 = 厨具架(双菜刀)      ← 单菜刀 + 菜刀
    kitchenwarerackd_4 = 厨具架(菜刀+锅勺)   ← 单菜刀 + 锅勺

========================================
六、古式唱片机(放碟/取碟)【已实现】
========================================
- 古式唱片机(无碟) b_108 / 古式唱片机(有碟) b_109
- 放入: 手持任意原版唱片(minecraft:music_disc_*)右键无碟 → 有碟, 消耗1个,
  唱片(物品名+aux)写入方块实体数据(rtdd_disc), 退出重进不丢
- 取回: 空手右键 → 无碟 + 掉落该唱片(原样返还)

todo 放入唱片后 播放对应唱片曲目(后续实现)

========================================
七、垃圾桶(开关盖/扔垃圾)【已实现】
========================================
- 垃圾桶(关闭) storage_buckets / 垃圾桶(打开) rubbish_bin_2 / 垃圾桶(有垃圾) b_160
- 打开: 右键垃圾桶(空手/手持均可) → 打开桶盖(不消耗物品)
- 扔垃圾: 打开时手持任意物品右键 → 变为 垃圾桶(有垃圾) 状态 + 清空主手物品
- 关闭: 右键(空手/手持均可) 打开/有垃圾 → 关闭桶盖
todo 转换: 垃圾桶(关闭) -> 垃圾桶(打开) -> 垃圾桶(有垃圾) -> 垃圾桶(关闭)
        右键转换
     功能: 打开时 主手拿任何东西右键 都会变成 垃圾桶(有垃圾) 状态 同时清空主手物品 以达到垃圾桶效果

========================================
七b、壁炉(加柴/点燃)【已实现】
========================================
- 壁炉(空) b_88 / 壁炉(加柴火) b_89 / 壁炉(点燃) b_90
- 加柴: 手持 木条(rtdd:b_15) 右键空壁炉 → 加柴火, 消耗4个木条
- 点燃: 手持 打火石(不消耗)/烈焰弹(消耗1) 右键加柴火 → 点燃

30. 壁炉(空) -> 壁炉(加柴火)
转换条件:[手持 木条 右键 进行转换, 木条数量减少]
机制: 手持木条右键, 消耗4个, 壁炉加好柴火

31. 壁炉(加柴火) -> 壁炉(点燃)
转换条件:[手持 打火石/烈焰弹 右键 进行转换]
机制: 手持打火石(不消耗)或烈焰弹(消耗1)右键, 壁炉点燃

========================================
八、静态家具方块(无转换)
========================================
b_102(烟囱)、b_103(烟道)、b_111(吧台)、b_112(台柜)、b_124(格子架)、b_125(格子窗)、
b_127(地图台)、b_15(木条)、b_35(双人床)、b_196~b_201(书本系列)、
bamboomeshfence(竹栏)、cabinet(橱柜(盘子+调料瓶))、cabinet_1(橱柜(仅调料瓶))、
seasoningrack(调料架)、shelving(置物架)、statueofadeity(神像)、stool(桌凳)

todo 木条的获得: 切石机 放入任何原版木板 即可获得4个木条
        双人床 功能:床 但是可以两个人一起睡(后续实现)
