From e047327cbb8d0f4f5103835713548b723e48fcae Mon Sep 17 00:00:00 2001 From: MC_XiaoHei Date: Sun, 10 Aug 2025 14:42:22 +0800 Subject: [PATCH] fix: fix bot use raytrace (#669) * fix: fix bot use raytrace * chore: refactor --- .../java/org/leavesmc/leaves/bot/ServerBot.java | 13 +++++++++++-- .../bot/agent/actions/ServerAttackAction.java | 2 +- .../bot/agent/actions/ServerUseItemAutoAction.java | 6 ++---- .../bot/agent/actions/ServerUseItemOnAction.java | 14 +------------- .../actions/ServerUseItemOnOffhandAction.java | 3 +-- .../bot/agent/actions/ServerUseItemToAction.java | 6 +----- .../actions/ServerUseItemToOffhandAction.java | 3 +-- 7 files changed, 18 insertions(+), 29 deletions(-) diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java index a9dd10cb..66aded82 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/ServerBot.java @@ -45,6 +45,7 @@ import net.minecraft.world.level.portal.TeleportTransition; import net.minecraft.world.level.storage.ValueInput; import net.minecraft.world.level.storage.ValueOutput; import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.EntityHitResult; import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.Vec3; @@ -540,14 +541,22 @@ public class ServerBot extends ServerPlayer { return this.getBukkitEntity().getLocation(); } - public EntityHitResult getEntityHitResult(int maxDistance, Predicate predicate) { - EntityHitResult result = this.pick(this, maxDistance); + public EntityHitResult getEntityHitResult() { + return this.getEntityHitResult(null); + } + + public EntityHitResult getEntityHitResult(Predicate predicate) { + EntityHitResult result = this.pick(this, this.entityInteractionRange()); if (result != null && (predicate == null || predicate.test(result.getEntity()))) { return result; } return null; } + public BlockHitResult getBlockHitResult() { + return (BlockHitResult) this.pick(this.blockInteractionRange(), 1.0f, false); + } + private EntityHitResult pick(Entity entity, double maxDistance) { double d = maxDistance; double d1 = Mth.square(maxDistance); diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerAttackAction.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerAttackAction.java index 52361755..c062b3e0 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerAttackAction.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerAttackAction.java @@ -13,7 +13,7 @@ public class ServerAttackAction extends ServerTimerBotAction @Override public boolean doTick(@NotNull ServerBot bot) { - EntityHitResult hitResult = bot.getEntityHitResult(3, target -> target.isAttackable() && !target.skipAttackInteraction(bot)); + EntityHitResult hitResult = bot.getEntityHitResult(target -> target.isAttackable() && !target.skipAttackInteraction(bot)); if (hitResult == null) { return false; } else { diff --git a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemAutoAction.java b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemAutoAction.java index 81221640..ce979217 100644 --- a/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemAutoAction.java +++ b/leaves-server/src/main/java/org/leavesmc/leaves/bot/agent/actions/ServerUseItemAutoAction.java @@ -14,9 +14,7 @@ import org.leavesmc.leaves.bot.ServerBot; import org.leavesmc.leaves.entity.bot.actions.CraftUseItemAutoAction; import static org.leavesmc.leaves.bot.agent.actions.ServerUseItemAction.useItem; -import static org.leavesmc.leaves.bot.agent.actions.ServerUseItemOnAction.getBlockHitResult; import static org.leavesmc.leaves.bot.agent.actions.ServerUseItemOnAction.useItemOn; -import static org.leavesmc.leaves.bot.agent.actions.ServerUseItemToAction.getEntityHitResult; import static org.leavesmc.leaves.bot.agent.actions.ServerUseItemToAction.useItemTo; public class ServerUseItemAutoAction extends ServerUseBotAction { @@ -66,10 +64,10 @@ public class ServerUseItemAutoAction extends ServerUseBotAction { @@ -17,7 +16,7 @@ public class ServerUseItemOnOffhandAction extends ServerUseBotAction { @@ -17,7 +16,7 @@ public class ServerUseItemToOffhandAction extends ServerUseBotAction