diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py index 45b5f60..24c5f44 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/NaturalData.py @@ -15,7 +15,7 @@ NaturalService / NaturalTimerService 读取,FeatureDispatcher 通过方块名/ 5) 柴火分解 (工作台配方): firewood -> 9个木条 6) 水稻种植 (手持稻谷右键耕地): farmland -> 水稻刚种下 7) 水稻生长 (计时): riceseedlingsb -> c -> d - 8) 水稻收获 (右键): 成熟水稻 -> 取16大米, 变回刚种下 + 8) 水稻收获 (左键破坏掉落): 水稻方块破坏掉稻谷, 成熟额外掉大米 【不实现(后续实现)】 - 果树"树苗成长"机制(树叶对应树苗, 像原版一样长成树): 后续实现, 本次跳过。 @@ -28,14 +28,14 @@ NaturalService / NaturalTimerService 读取,FeatureDispatcher 通过方块名/ # ============================================================================ # 一、柴火堆叠/取用(右键) -# firewood(柴火_1) + 手持柴火 -> firewood_2(柴火_2 堆放) -# firewood_2 空手右键 -> firewood + 给1个柴火 +# firewood_2(柴火_2) + 手持柴火 -> firewood(柴火_1 堆放) +# firewood(堆放) 空手右键 -> firewood_2 + 给1个柴火 # ============================================================================ FIREWOOD_RULES = [ - {"source": "rtdd:firewood", "item": "rtdd:firewood", - "target": "rtdd:firewood_2", "consume": 1, "tip": "§a堆放柴火"}, - {"source": "rtdd:firewood_2", "item": None, - "target": "rtdd:firewood", "giveItem": "rtdd:firewood", "tip": "§a取走柴火"}, + {"source": "rtdd:firewood_2", "item": "rtdd:firewood", + "target": "rtdd:firewood", "consume": 1, "tip": "§a堆放柴火"}, + {"source": "rtdd:firewood", "item": None, + "target": "rtdd:firewood_2", "giveItem": "rtdd:firewood", "tip": "§a取走柴火"}, ] # ============================================================================ @@ -50,18 +50,19 @@ GRAPE_HARVEST = { } # ============================================================================ -# 三、水稻收获(右键) -# riceseedlingsd(成熟) 空手右键 -> riceseedlingsb + 掉落16个大米 +# 三、水稻收获(左键破坏掉落, 类似原版作物) +# 水稻方块被左键破坏 -> 掉落稻谷; 成熟(riceseedlingsd)额外掉大米 # ============================================================================ -RICE_HARVEST = { - "source": "rtdd:riceseedlingsd", "item": None, - "target": "rtdd:riceseedlingsb", - "dropItem": [{"name": "rtdd:brownrice", "count": 16}], - "tip": "§a收获了16个大米", -} +RICE_BLOCKS = [ + "rtdd:riceseedlingsb", # 刚种下 + "rtdd:riceseedlingsc", # 生长中 + "rtdd:riceseedlingsd", # 成熟 +] +RICE_SEED_ITEM = "rtdd:rice_seeds" # 破坏掉落稻谷 +RICE_CROP_ITEM = "rtdd:brownrice" # 成熟额外掉落大米 # 汇总: 乡野自然右键切换规则 -NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST, RICE_HARVEST] +NATURAL_SWITCHES = FIREWOOD_RULES + [GRAPE_HARVEST] # ============================================================================ # 四、计时转换 (果树结果 / 葡萄藤生长 / 水稻生长, 均 autoStart 自动生长) diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalService.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalService.py index 40eefe6..ed283b2 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalService.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/ziran/service/NaturalService.py @@ -32,7 +32,7 @@ from ....BlueFoxTools.SpecialFunciton.BlueFoxSystem import BlueFoxServerSystem from ....BlueFoxTools.ToolsConfig import LevelId # ---- 只导入乡野自然自己的数据库 ---- -from ..NaturalData import NATURAL_SWITCHES, RICE_PLANT +from ..NaturalData import NATURAL_SWITCHES, RICE_PLANT, RICE_BLOCKS, RICE_SEED_ITEM, RICE_CROP_ITEM # ---- 统一分发器 ---- from ...service.FeatureDispatcher import FeatureDispatcher @@ -53,6 +53,9 @@ class NaturalService(BlueFoxServerSystem): for r in NATURAL_SWITCHES: self.switchRecipes[(r["source"], r.get("item"))] = r self.featureBlocks.add(r["source"]) + # 水稻方块: 只为接收"左键破坏掉落"事件注册(右键无规则, handleBlockUse 会返回 False) + for b in RICE_BLOCKS: + self.featureBlocks.add(b) # ---- 右键冷却表 ---- self.cooldown = {} @@ -92,6 +95,49 @@ class NaturalService(BlueFoxServerSystem): self.handleSwitch(recipe, playerId, pos, dim, itemDict, key) return True + def handleDestroy(self, args): + """由 FeatureDispatcher 转发的"玩家左键破坏方块"入口(水稻收获, 类似原版作物)。 + 水稻方块(刚种下/生长中/成熟)被左键破坏 -> 掉落稻谷(1个, 回收种子); + 成熟(riceseedlingsd)额外掉落 16 个大米(brownrice)。 + 返回 True=处理了; False=不属本功能管。""" + blockName = args.get("fullName") or args.get("blockName") + if blockName not in RICE_BLOCKS: + return False + playerId = args.get("playerId") + x, y, z = args.get("x"), args.get("y"), args.get("z") + pos = (x, y, z) + dim = comp.CreateDimension(playerId).GetEntityDimensionId() + + # 取消默认破坏+默认掉落(不让水稻方块本身掉出来) + args['cancel'] = True + args['spawnResources'] = False + + # 清空方块为空气 + try: + comp.CreateBlockInfo(LevelId).SetBlockNew( + pos, blockDict={"name": "minecraft:air", "aux": 0}, + oldBlockHandling=0, dimensionId=dim) + except Exception: + pass + + # 掉落稻谷(种子回收) + try: + self.CreateEngineItemEntity( + {"itemName": RICE_SEED_ITEM, "count": 1, "auxValue": 0}, + dim, (x, y + 0.5, z)) + except Exception: + pass + + # 成熟水稻额外掉落大米 + if blockName == "rtdd:riceseedlingsd": + try: + self.CreateEngineItemEntity( + {"itemName": RICE_CROP_ITEM, "count": 16, "auxValue": 0}, + dim, (x, y + 0.5, z)) + except Exception: + pass + return True + def handleItemUseOn(self, args): """由 FeatureDispatcher 转发的"手持物品右键方块表面"入口(稻谷种水稻)""" itemName = args.get("itemName") diff --git a/behavior_pack_v8jz0zSR/netease_blocks/grapebushes_1.json b/behavior_pack_v8jz0zSR/netease_blocks/grapebushes_1.json index ed1eada..4d1be20 100644 --- a/behavior_pack_v8jz0zSR/netease_blocks/grapebushes_1.json +++ b/behavior_pack_v8jz0zSR/netease_blocks/grapebushes_1.json @@ -10,7 +10,7 @@ "netease:aabb": { "collision": { "min": [ - -0.4375, + 0, -0.625, 0.1875 ], @@ -22,7 +22,7 @@ }, "clip": { "min": [ - -0.4375, + 0, -0.625, 0.1875 ], diff --git a/behavior_pack_v8jz0zSR/netease_blocks/grapebushes_2.json b/behavior_pack_v8jz0zSR/netease_blocks/grapebushes_2.json index f492897..70a28ed 100644 --- a/behavior_pack_v8jz0zSR/netease_blocks/grapebushes_2.json +++ b/behavior_pack_v8jz0zSR/netease_blocks/grapebushes_2.json @@ -10,7 +10,7 @@ "netease:aabb": { "collision": { "min": [ - -0.4375, + 0, -0.625, -0.125 ], @@ -22,7 +22,7 @@ }, "clip": { "min": [ - -0.4375, + 0, -0.625, -0.125 ], diff --git a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsb.json b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsb.json index cff185b..01be514 100644 --- a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsb.json +++ b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsb.json @@ -8,28 +8,16 @@ }, "components": { "netease:aabb": { - "collision": { - "min": [ - 0.125, - 0.0, - 0.125 - ], - "max": [ - 0.875, - 2.0, - 1.1875 - ] - }, "clip": { "min": [ - 0.125, + 0, 0.0, - 0.125 + 0 ], "max": [ - 0.875, - 2.0, - 1.1875 + 1, + 1.0, + 1 ] } }, diff --git a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsc.json b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsc.json index 0bb3a9d..5055c46 100644 --- a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsc.json +++ b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsc.json @@ -8,28 +8,16 @@ }, "components": { "netease:aabb": { - "collision": { - "min": [ - 0.125, - 0.0, - 0.125 - ], - "max": [ - 0.875, - 2.0, - 1.1875 - ] - }, "clip": { "min": [ - 0.125, + 0, 0.0, - 0.125 + 0 ], "max": [ - 0.875, + 1, 2.0, - 1.1875 + 1 ] } }, diff --git a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsd.json b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsd.json index 406f48c..f78a73b 100644 --- a/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsd.json +++ b/behavior_pack_v8jz0zSR/netease_blocks/riceseedlingsd.json @@ -8,28 +8,16 @@ }, "components": { "netease:aabb": { - "collision": { - "min": [ - 0.125, - 0.0, - 0.125 - ], - "max": [ - 0.875, - 2.0, - 1.1875 - ] - }, "clip": { "min": [ - 0.125, + 0, 0.0, - 0.125 + 0 ], "max": [ - 0.875, + 1, 2.0, - 1.1875 + 1 ] } }, diff --git a/tuilun/乡野自然转化关系.txt b/tuilun/ok/乡野自然转化关系.txt similarity index 84% rename from tuilun/乡野自然转化关系.txt rename to tuilun/ok/乡野自然转化关系.txt index e5e53c0..44a1977 100644 --- a/tuilun/乡野自然转化关系.txt +++ b/tuilun/ok/乡野自然转化关系.txt @@ -42,13 +42,13 @@ todo 后续实现 转换条件:[空手 右键 取出] 机制: 成熟葡萄藤右键取出 3 个葡萄(grape), 变回葡萄藤_1 -5. 柴火_1(柴火) -> 柴火_2 -转换条件:[手持 柴火 右键 进行堆叠] -机制: 手持柴火右键,消耗1个,堆叠成柴火_2(堆放) +5. 柴火_2 -> 柴火_1(堆放) +转换条件:[手持 柴火(rtdd:firewood) 右键 进行堆叠] +机制: 手持柴火右键柴火_2,消耗1个,堆叠成柴火_1(堆放) -5a. 柴火_2 -> 柴火_1(柴火) -转换条件:[右键 进行转换,取走柴火] -机制: 空手右键,取走1个柴火,退回柴火_1(取用) +5a. 柴火_1(堆放) -> 柴火_2 +转换条件:[空手 右键 进行转换,取走柴火] +机制: 空手右键柴火_1,取走1个柴火,退回柴火_2(取用) (柴火用于燃料; 注意: 壁炉加柴用的是 木条(rtdd:b_15), 不是柴火方块, 见 家具家私转化关系.txt 七b) 5b. 柴火_1 -> 9个木条 @@ -66,11 +66,11 @@ todo 后续实现 转换条件:[水稻生长计时,逐级变化] 机制: 计时生长,约120秒升一级,共两级成熟 -7a. 水稻(成熟) -> 水稻(刚种下) + 16个大米 -转换条件:[空手 右键 收获] -机制: 成熟水稻右键获得 16 个大米(brownrice), 变回刚种下继续生长 +7a. 水稻(各状态) 左键破坏 -> 掉落稻谷; 成熟额外掉大米 +转换条件:[左键 破坏方块] +机制: 破坏 刚种下/生长中 掉 1个稻谷(rice_seeds); + 破坏 成熟(riceseedlingsd) 掉 1个稻谷(rice_seeds) + 16个大米(brownrice) (大米进入 乡野食材/谷物·米面, 经 汤锅 煮饭盛出后供 寿司(含饭团 rice_balls)/蛋炒饭, 生米供 竹筒饭 等) - ======================================== 四、方块清单 ======================================== diff --git a/tuilun/全部功能做了什么.txt b/tuilun/全部功能做了什么.txt index d9c542d..aadb07b 100644 --- a/tuilun/全部功能做了什么.txt +++ b/tuilun/全部功能做了什么.txt @@ -419,14 +419,14 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher) - 取葡萄: grapebushes_2 空手右键 -> 掉落3个葡萄(grape) + 变回 grapebushes_1 [已实现] 三、柴火 (堆叠/取用 + 工作台分解) -- 堆叠: firewood + 手持柴火右键 -> firewood_2(消耗1) [已实现] -- 取用: firewood_2 空手右键 -> firewood + 返还1柴火 [已实现] +- 堆叠: firewood_2(柴火_2) + 手持柴火右键 -> firewood(柴火_1 堆放, 消耗1) [已实现] +- 取用: firewood(堆放) 空手右键 -> firewood_2 + 返还1柴火 [已实现] - 分解: firewood 工作台 -> 9个木条(b_15) (配方 xy_firewood_plank) [已实现] 四、水稻 (种植 + 生长 + 收获) - 种植: 手持稻谷(rice_seeds) 右键原版耕地(farmland) -> 耕地上方放置 水稻刚种下(riceseedlingsb) [已实现] - 生长: riceseedlingsb 计时120秒 -> riceseedlingsc 计时120秒 -> riceseedlingsd [已实现] -- 收获: riceseedlingsd 空手右键 -> 掉落16个大米(brownrice) + 变回 riceseedlingsb [已实现] +- 收获(左键破坏): 破坏 刚种下/生长中 -> 掉1稻谷(rice_seeds); 破坏成熟(riceseedlingsd) -> 掉1稻谷 + 16大米(brownrice) [已实现] 【留后】果树"树苗成长"机制 见 全部功能没做什么.txt 乡野自然节