refactor(client): make more methods async
This commit is contained in:
parent
75d4a9c183
commit
324cb2d6d8
@ -1,9 +1,21 @@
|
|||||||
use super::{Client, Vec3};
|
use super::{Client, Vec3};
|
||||||
use azalea::{BlockPos, BotClientExt, world::MinecraftEntityId};
|
use azalea::{BlockPos, BotClientExt, attack::AttackEvent, world::MinecraftEntityId};
|
||||||
use mlua::{Lua, Result, UserDataRef};
|
use mlua::{Lua, Result, UserDataRef};
|
||||||
|
|
||||||
pub fn attack(_lua: &Lua, client: &mut Client, entity_id: u32) -> Result<()> {
|
pub async fn attack(_lua: Lua, client: UserDataRef<Client>, entity_id: u32) -> Result<()> {
|
||||||
client.attack(MinecraftEntityId(entity_id));
|
client.clone().attack(MinecraftEntityId(entity_id));
|
||||||
|
|
||||||
|
while client.get_tick_broadcaster().recv().await.is_ok() {
|
||||||
|
if client
|
||||||
|
.ecs
|
||||||
|
.lock()
|
||||||
|
.get::<AttackEvent>(client.entity)
|
||||||
|
.is_none()
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,9 @@ impl UserData for Client {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn add_methods<M: UserDataMethods<Self>>(m: &mut M) {
|
fn add_methods<M: UserDataMethods<Self>>(m: &mut M) {
|
||||||
|
m.add_async_method("attack", interaction::attack);
|
||||||
m.add_async_method("goto", movement::goto);
|
m.add_async_method("goto", movement::goto);
|
||||||
|
m.add_async_method("look_at", movement::look_at);
|
||||||
m.add_async_method("mine", interaction::mine);
|
m.add_async_method("mine", interaction::mine);
|
||||||
m.add_async_method("open_container_at", container::open_container_at);
|
m.add_async_method("open_container_at", container::open_container_at);
|
||||||
m.add_async_method("set_client_information", state::set_client_information);
|
m.add_async_method("set_client_information", state::set_client_information);
|
||||||
@ -69,10 +71,8 @@ impl UserData for Client {
|
|||||||
m.add_method("set_held_slot", container::set_held_slot);
|
m.add_method("set_held_slot", container::set_held_slot);
|
||||||
m.add_method("set_mining", interaction::set_mining);
|
m.add_method("set_mining", interaction::set_mining);
|
||||||
m.add_method("stop_pathfinding", movement::stop_pathfinding);
|
m.add_method("stop_pathfinding", movement::stop_pathfinding);
|
||||||
m.add_method_mut("attack", interaction::attack);
|
|
||||||
m.add_method_mut("block_interact", interaction::block_interact);
|
m.add_method_mut("block_interact", interaction::block_interact);
|
||||||
m.add_method_mut("jump", movement::jump);
|
m.add_method_mut("jump", movement::jump);
|
||||||
m.add_method_mut("look_at", movement::look_at);
|
|
||||||
m.add_method_mut("open_inventory", container::open_inventory);
|
m.add_method_mut("open_inventory", container::open_inventory);
|
||||||
m.add_method_mut("set_direction", movement::set_direction);
|
m.add_method_mut("set_direction", movement::set_direction);
|
||||||
m.add_method_mut("set_jumping", movement::set_jumping);
|
m.add_method_mut("set_jumping", movement::set_jumping);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use super::{Client, Direction, Vec3};
|
use super::{Client, Direction, Vec3};
|
||||||
use azalea::{
|
use azalea::{
|
||||||
BlockPos, BotClientExt, SprintDirection, WalkDirection,
|
BlockPos, BotClientExt, LookAtEvent, SprintDirection, WalkDirection,
|
||||||
interact::HitResultComponent,
|
interact::HitResultComponent,
|
||||||
pathfinder::{
|
pathfinder::{
|
||||||
ExecutingPath, GotoEvent, Pathfinder, PathfinderClientExt,
|
ExecutingPath, GotoEvent, Pathfinder, PathfinderClientExt,
|
||||||
@ -137,8 +137,22 @@ pub fn looking_at(lua: &Lua, client: &Client) -> Result<Option<Table>> {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn look_at(_lua: &Lua, client: &mut Client, position: Vec3) -> Result<()> {
|
pub async fn look_at(_lua: Lua, client: UserDataRef<Client>, position: Vec3) -> Result<()> {
|
||||||
client.look_at(azalea::Vec3::new(position.x, position.y, position.z));
|
client
|
||||||
|
.clone()
|
||||||
|
.look_at(azalea::Vec3::new(position.x, position.y, position.z));
|
||||||
|
|
||||||
|
while client.get_tick_broadcaster().recv().await.is_ok() {
|
||||||
|
if client
|
||||||
|
.ecs
|
||||||
|
.lock()
|
||||||
|
.get::<LookAtEvent>(client.entity)
|
||||||
|
.is_none()
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user