diff --git a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/jiaju/service/FurnitureService.py b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/jiaju/service/FurnitureService.py index c014b69..5d94aa7 100644 --- a/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/jiaju/service/FurnitureService.py +++ b/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/xiangyemod/jiaju/service/FurnitureService.py @@ -376,7 +376,7 @@ class FurnitureService(BlueFoxServerSystem): if not stackNames: return # 点左/点右 决定取哪个厨具(单件时无论点左右都取那一个) - side = self._rackSideByClick(click.get("face"), click.get("cx"), click.get("cz")) + side = self._rackSideByClick(click.get("aux"), click.get("cx"), click.get("cz")) if len(layout) >= 2: idx = 0 if side == "left" else 1 else: @@ -422,16 +422,18 @@ class FurnitureService(BlueFoxServerSystem): self.replaceBlock(pos, dim, target, playerId) self._saveRecordDelayed(pos, dim, {"stack": self._namesToObjs(stackNames)}) - def _rackSideByClick(self, face, cx, cz): - """根据点击的面 + 命中比例位置, 判断点的是左槽还是右槽。 - 顶面/南北面(法线沿Z): 沿X分左右; 东西面(法线沿X): 沿Z分左右。 - 返回 'left' / 'right'。若实测与实际相反, 直接翻转本方法即可。""" - if face in (4, 5): # 东/西面: 沿 Z 分 - v = cz - else: # 顶/北/南面(默认): 沿 X 分 - v = cx - v = float(v) if v is not None else 0 - return "left" if v < 0.5 else "right" + def _rackSideByClick(self, aux, cx, cz): + """根据方块朝向(aux) + 命中点在方块内的坐标, 判定点的是左槽还是右槽。 + 与玩家站在哪一侧/点哪个面无关 —— 只按 aux 定出架子的"右轴"与右槽所在端, + 取命中点沿该轴坐标(v, clickX 或 clickZ)与 0.5 比较。 + aux 编码(实测): 0=朝北(-Z) 1=朝东(+X) 2=朝南(+Z) 3=朝西(-X)。 + 以 d_4(左锅勺右菜刀)为锚: 朝北时左槽在低X端, 依 rotation 推得其余朝向。""" + axis_x = aux in (0, 2) # 右轴沿 X(朝北0/朝南2); 否则沿 Z(朝东1/朝西3) + positive = aux in (0, 1) # 右槽在 +轴端: 0→+X, 1→+Z; 2/3 则在 -轴端 + v = float((cx if axis_x else cz) or 0) + if positive: + return "right" if v >= 0.5 else "left" + return "right" if v < 0.5 else "left" def _rackTarget(self, itemNames): """根据厨具物品名列表计算厨具架目标方块(0件=空, 1件=单件, 2件=组合, 顺序无关)""" diff --git a/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_blue_lime_oblique.json b/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_blue_lime_oblique.json index 355e8fb..208c567 100644 --- a/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_blue_lime_oblique.json +++ b/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_blue_lime_oblique.json @@ -29,7 +29,7 @@ "pattern": [ "0 ", "34 ", - "6 8" + " 68" ], "result": { "data": 0, diff --git a/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_red_orange.json b/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_red_orange.json index a65dd65..c7aa51a 100644 --- a/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_red_orange.json +++ b/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_red_orange.json @@ -20,7 +20,7 @@ }, "pattern": [ "000", - "34 " + "3 4" ], "result": { "data": 0, diff --git a/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_red_orange_oblique.json b/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_red_orange_oblique.json index 3b747b3..3d6485b 100644 --- a/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_red_orange_oblique.json +++ b/behavior_pack_v8jz0zSR/netease_recipes/xy_flag_red_orange_oblique.json @@ -29,7 +29,7 @@ "pattern": [ "0 ", "34 ", - "6 8" + " 68" ], "result": { "data": 0,