Files
rtdd/tuilun/家具家私转化关系.txt
T
2026-09-03 15:23:33 +08:00

199 lines
10 KiB
Plaintext

========================================
【家具家私】(xy_furniture) 转化关系
========================================
说明:
- 家具家私分类方块: 箭桶、水槽、盘子架、书柜、厨具架、唱片机、垃圾桶 系列
- 有交互转换的: 箭桶(存/取箭)、水槽(加水/取水/放洗脏盘/取脏盘)、
盘子架(放/取盘)、书柜(放/取书)、厨具架(放/取厨具)
- 【方块存储物品实现】(FurnitureService 两种记录, 写入方块实体数据, 退出重进不丢):
① count记录(箭桶): 记录一种物品+数量, 字段 rtdd_swt=count / rtdd_swc=数量 /
rtdd_swi=物品名 / rtdd_swa=aux值
② stack记录(书柜): 后放先取堆栈, 记录完整物品信息(含userData, 附魔不丢),
字段 rtdd_swt=stack / rtdd_sws=堆栈列表
- 【实现状态】: 箭桶/水槽/盘子架/书柜/厨具架/古式唱片机/垃圾桶 全部已实现
(统一由 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)
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个盘子
========================================
四、书柜(放书/取书, 后放先取, 至多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), 取回的书保留原物品信息(附魔等)
========================================
五、厨具架(放厨具/取厨具, 至多2件)【已实现】
========================================
- 可放厨具: 锅铲(rtdd:spatula)、锅勺(rtdd:potandspoon)、菜刀(rtdd:cleaver)、炒锅(rtdd:wok)
- 放入: 手持厨具右键 厨具架(空/未满) → 放入该厨具, 消耗1个, 厨具架形态变为对应组合
- 取回: 空手右键 → 取回厨具(后放先取), 厨具架形态退回上一组合/空
- 厨具架方块状态(方块名称即组合, 一块最多挂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_102(烟囱)、b_103(烟道)、b_111(吧台)、b_112(台柜)、b_124(格子架)、b_125(格子窗)、
b_127(地图台)、b_15(木条)、b_35(双人床)、b_88(壁炉)、b_196~b_201(书本系列)、
bamboomeshfence(竹栏)、cabinet(橱柜(盘子+调料瓶))、cabinet_1(橱柜(仅调料瓶))、
seasoningrack(调料架)、shelving(置物架)、statueofadeity(神像)、stool(桌凳)
todo 木条的获得: 切石机 放入任何原版木板 即可获得4个木条
双人床 功能:床 但是可以两个人一起睡(后续实现)