1
2
Fork 0
mirror of https://github.com/mat-1/azalea.git synced 2025-08-02 06:16:04 +00:00

better pathfinder debug messages

This commit is contained in:
mat 2024-12-28 01:48:25 +00:00
parent 5693191b57
commit ebaf5128fb
4 changed files with 37 additions and 12 deletions

View file

@ -356,6 +356,10 @@ pub fn fluid_shape(
return &BLOCK_SHAPE;
}
}
if fluid.amount > 9 {
warn!("Tried to calculate shape for fluid with height > 9: {fluid:?} at {pos}");
return &EMPTY_SHAPE;
}
// pre-calculate these in a LazyLock so this function can return a
// reference instead
@ -375,11 +379,6 @@ pub fn fluid_shape(
]
});
if fluid.amount > 9 {
warn!("Tried to calculate shape for fluid with height > 9: {fluid:?} at {pos}");
return &EMPTY_SHAPE;
}
&FLUID_SHAPES[fluid.amount as usize]
}
fn calculate_shape_for_fluid(amount: u8) -> VoxelShape {

View file

@ -3,7 +3,7 @@ use std::time::Duration;
use azalea::{
brigadier::prelude::*,
entity::{EyeHeight, Position},
pathfinder::goals::{BlockPosGoal, XZGoal},
pathfinder::goals::{BlockPosGoal, RadiusGoal, XZGoal},
prelude::*,
BlockPos, SprintDirection, WalkDirection,
};
@ -42,6 +42,24 @@ pub fn register(commands: &mut CommandDispatcher<Mutex<CommandSource>>) {
1
}),
)))
.then(literal("radius").then(argument("radius", float()).then(
argument("x", integer()).then(argument("y", integer()).then(
argument("z", integer()).executes(|ctx: &Ctx| {
let source = ctx.source.lock();
let radius = get_float(ctx, "radius").unwrap();
let x = get_integer(ctx, "x").unwrap();
let y = get_integer(ctx, "y").unwrap();
let z = get_integer(ctx, "z").unwrap();
println!("goto radius {radius}, position: {x} {y} {z}");
source.reply("ok");
source.bot.goto(RadiusGoal {
pos: BlockPos::new(x, y, z).center(),
radius,
});
1
}),
)),
)))
.then(argument("x", integer()).then(argument("y", integer()).then(
argument("z", integer()).executes(|ctx: &Ctx| {
let source = ctx.source.lock();

View file

@ -1,6 +1,6 @@
//! The goals that a pathfinder can try to reach.
use std::f32::consts::SQRT_2;
use std::{f32::consts::SQRT_2, fmt::Debug};
use azalea_core::position::{BlockPos, Vec3};
use azalea_world::ChunkStorage;
@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize};
use super::costs::{COST_HEURISTIC, FALL_N_BLOCKS_COST, JUMP_ONE_BLOCK_COST};
pub trait Goal {
pub trait Goal: Debug {
#[must_use]
fn heuristic(&self, n: BlockPos) -> f32;
#[must_use]

View file

@ -235,6 +235,7 @@ pub fn goto_listener(
let Ok((mut pathfinder, executing_path, position, instance_name, inventory)) =
query.get_mut(event.entity)
else {
warn!("got goto event for an entity that can't pathfind");
continue;
};
@ -243,6 +244,7 @@ pub fn goto_listener(
pathfinder.goal = None;
pathfinder.successors_fn = None;
pathfinder.is_calculating = false;
debug!("already at goal, not pathfinding");
continue;
}
@ -262,10 +264,16 @@ pub fn goto_listener(
} else {
BlockPos::from(position)
};
info!(
"got goto, starting from {start:?} (currently at {:?})",
BlockPos::from(position)
);
if start == BlockPos::from(position) {
info!("got goto {:?}, starting from {start:?}", event.goal);
} else {
info!(
"got goto {:?}, starting from {start:?} (currently at {:?})",
event.goal,
BlockPos::from(position)
);
}
let successors_fn: moves::SuccessorsFn = event.successors_fn;