原版熟食物品放置 (keyong)

This commit is contained in:
wenhe committed 2026-09-03 17:30:18 +08:00
1 parent 620500ab45
commit 38f2ff2b33
7 files changed
+117 -27

No files matched your search

+219
View File
@@ -0,0 +1,219 @@
========================================
【家具家私】(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个盘子
========================================
四、书柜(放书/取书, 后放先取, 至多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_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个木条
双人床 功能:床 但是可以两个人一起睡(后续实现)
+48
View File
@@ -0,0 +1,48 @@
========================================
【药物系统】(xy_medicine) 转化关系
========================================
说明:
- 药物系统分类无分组,按标识自动排序
- 核心交互: 药水架(存/取药水)、药罐(制药)
- 【待确认】表示该步骤所需的具体操作或配方尚未最终确定
========================================
一、药水架(存/取药水,后放先取,至多3瓶)【已移至家具分类,见 家具家私转化关系.txt 四b】
========================================
说明: 药水架(lotion_0~3)已从药物系统移至家具分类(xy_furniture), 由 FurnitureService 实现:
手持任意药水右键放入(消耗1瓶,记录药水名+aux), 空手右键后放先取取回(掉落物)。
具体规则见 家具家私转化关系.txt 四b、药水架。
1. 药水架_1(空) -> 药水架_2(一瓶药水)
转换条件:[手持 任意药水 右键 进行转换,药水数量减少,方块记录药水类型]
机制: 手持药水右键,消耗1瓶,放入药水并记录类型
2. 药水架_2(一瓶) -> 药水架_3(两瓶)
转换条件:[手持 任意药水 右键 进行转换,药水数量减少,方块记录药水类型]
机制: 手持药水右键,消耗1瓶,放入第二瓶并记录类型
3. 药水架_3(两瓶) -> 药水架_4(三瓶)
转换条件:[手持 任意药水 右键 进行转换,药水数量减少,方块记录药水类型]
机制: 手持药水右键,消耗1瓶,放入第三瓶并记录类型
4. 药水架_4(三瓶) -> 药水架_3(两瓶)
转换条件:[右键 进行转换,取回最后放入的那瓶药水]
机制: 空手右键,取回最后放入的药水
5. 药水架_3(两瓶) -> 药水架_2(一瓶)
转换条件:[右键 进行转换,取回倒数第二放入的药水]
机制: 空手右键,取回倒数第二瓶药水
6. 药水架_2(一瓶) -> 药水架_1(空)
转换条件:[右键 进行转换,取回最先放入的药水]
机制: 空手右键,取回最先放入的药水
========================================
二、药罐(制药)
========================================
========================================
三、其他静态方块
========================================
bandage_2(绷带)、mortar(石臼)
以上为静态工具方块,无独立转换