Compare commits

..

No commits in common. "afdfadb5b2bbd6036897cf5ce601ffe2dad050c2" and "e618a8a27bd7f0acfca68709572349323e061271" have entirely different histories.

25 changed files with 64 additions and 98 deletions

View File

@ -1,2 +0,0 @@
[toolchain]
channel = "nightly"

View File

@ -1 +0,0 @@
group_imports = "StdExternalCrate"

View File

@ -1,8 +1,6 @@
use std::path::PathBuf;
use clap::Parser;
use crate::build_info; use crate::build_info;
use clap::Parser;
use std::path::PathBuf;
/// A Minecraft bot with Lua scripting support /// A Minecraft bot with Lua scripting support
#[derive(Parser)] #[derive(Parser)]

View File

@ -1,12 +1,11 @@
use azalea::{brigadier::prelude::*, chat::ChatPacket, prelude::*};
use futures::lock::Mutex;
use mlua::{Function, Table};
use ncr::utils::prepend_header;
use crate::{ use crate::{
State, State,
lua::{eval, exec, reload}, lua::{eval, exec, reload},
}; };
use azalea::{brigadier::prelude::*, chat::ChatPacket, prelude::*};
use futures::lock::Mutex;
use mlua::{Function, Table};
use ncr::utils::prepend_header;
pub type Ctx = CommandContext<Mutex<CommandSource>>; pub type Ctx = CommandContext<Mutex<CommandSource>>;

View File

@ -1,5 +1,11 @@
use std::{net::SocketAddr, process::exit}; use crate::{
State,
commands::CommandSource,
http::serve,
lua::{client, direction::Direction, player::Player, vec3::Vec3},
particle,
replay::recorder::Recorder,
};
use anyhow::{Context, Result}; use anyhow::{Context, Result};
use azalea::{ use azalea::{
brigadier::exceptions::BuiltInExceptions::DispatcherUnknownCommand, prelude::*, brigadier::exceptions::BuiltInExceptions::DispatcherUnknownCommand, prelude::*,
@ -10,18 +16,11 @@ use hyper_util::rt::TokioIo;
use log::{debug, error, info, trace}; use log::{debug, error, info, trace};
use mlua::{Error, Function, IntoLuaMulti, Table}; use mlua::{Error, Function, IntoLuaMulti, Table};
use ncr::utils::trim_header; use ncr::utils::trim_header;
use std::{net::SocketAddr, process::exit};
use tokio::net::TcpListener; use tokio::net::TcpListener;
#[cfg(feature = "matrix")] #[cfg(feature = "matrix")]
use crate::matrix; use crate::matrix;
use crate::{
State,
commands::CommandSource,
http::serve,
lua::{client, direction::Direction, player::Player, vec3::Vec3},
particle,
replay::recorder::Recorder,
};
#[allow(clippy::too_many_lines)] #[allow(clippy::too_many_lines)]
pub async fn handle_event(client: Client, event: Event, state: State) -> Result<()> { pub async fn handle_event(client: Client, event: Event, state: State) -> Result<()> {

View File

@ -1,14 +1,13 @@
use crate::{
State,
lua::{eval, exec, reload},
};
use http_body_util::{BodyExt, Empty, Full, combinators::BoxBody}; use http_body_util::{BodyExt, Empty, Full, combinators::BoxBody};
use hyper::{ use hyper::{
Error, Method, Request, Response, StatusCode, Error, Method, Request, Response, StatusCode,
body::{Bytes, Incoming}, body::{Bytes, Incoming},
}; };
use crate::{
State,
lua::{eval, exec, reload},
};
pub async fn serve( pub async fn serve(
request: Request<Incoming>, request: Request<Incoming>,
state: State, state: State,

View File

@ -1,3 +1,4 @@
use super::{Client, Container, ContainerRef, ItemStack, Vec3};
use azalea::{ use azalea::{
BlockPos, BlockPos,
inventory::{Inventory, Menu, Player, SlotList}, inventory::{Inventory, Menu, Player, SlotList},
@ -7,8 +8,6 @@ use azalea::{
use log::error; use log::error;
use mlua::{Lua, Result, UserDataRef, Value}; use mlua::{Lua, Result, UserDataRef, Value};
use super::{Client, Container, ContainerRef, ItemStack, Vec3};
pub fn container(_lua: &Lua, client: &Client) -> Result<Option<ContainerRef>> { pub fn container(_lua: &Lua, client: &Client) -> Result<Option<ContainerRef>> {
Ok(client.get_open_container().map(ContainerRef)) Ok(client.get_open_container().map(ContainerRef))
} }

View File

@ -1,3 +1,4 @@
use super::{Client, Vec3};
use azalea::{ use azalea::{
BlockPos, BotClientExt, BlockPos, BotClientExt,
protocol::packets::game::{ServerboundUseItem, s_interact::InteractionHand}, protocol::packets::game::{ServerboundUseItem, s_interact::InteractionHand},
@ -6,8 +7,6 @@ use azalea::{
use log::error; use log::error;
use mlua::{Lua, Result, UserDataRef}; use mlua::{Lua, Result, UserDataRef};
use super::{Client, Vec3};
pub fn attack(_lua: &Lua, client: &mut Client, entity_id: i32) -> Result<()> { pub fn attack(_lua: &Lua, client: &mut Client, entity_id: i32) -> Result<()> {
client.attack(MinecraftEntityId(entity_id)); client.attack(MinecraftEntityId(entity_id));
Ok(()) Ok(())

View File

@ -6,17 +6,15 @@ mod movement;
mod state; mod state;
mod world; mod world;
use std::ops::{Deref, DerefMut};
use azalea::{Client as AzaleaClient, world::MinecraftEntityId};
use mlua::{Lua, Result, UserData, UserDataFields, UserDataMethods};
use super::{ use super::{
container::{Container, ContainerRef, item_stack::ItemStack}, container::{Container, ContainerRef, item_stack::ItemStack},
direction::Direction, direction::Direction,
player::Player, player::Player,
vec3::Vec3, vec3::Vec3,
}; };
use azalea::{Client as AzaleaClient, world::MinecraftEntityId};
use mlua::{Lua, Result, UserData, UserDataFields, UserDataMethods};
use std::ops::{Deref, DerefMut};
pub struct Client(pub Option<AzaleaClient>); pub struct Client(pub Option<AzaleaClient>);

View File

@ -1,3 +1,4 @@
use super::{Client, Direction, Vec3};
use azalea::{ use azalea::{
BlockPos, BotClientExt, SprintDirection, WalkDirection, BlockPos, BotClientExt, SprintDirection, WalkDirection,
entity::Position, entity::Position,
@ -12,8 +13,6 @@ use azalea::{
use log::error; use log::error;
use mlua::{FromLua, Lua, Result, Table, UserDataRef, Value}; use mlua::{FromLua, Lua, Result, Table, UserDataRef, Value};
use super::{Client, Direction, Vec3};
pub fn direction(_lua: &Lua, client: &Client) -> Result<Direction> { pub fn direction(_lua: &Lua, client: &Client) -> Result<Direction> {
let direction = client.direction(); let direction = client.direction();
Ok(Direction { Ok(Direction {

View File

@ -1,3 +1,6 @@
use crate::hacks::anti_knockback::AntiKnockback;
use super::Client;
use azalea::{ use azalea::{
ClientInformation, ClientInformation,
entity::metadata::{AirSupply, Score}, entity::metadata::{AirSupply, Score},
@ -6,9 +9,6 @@ use azalea::{
}; };
use mlua::{Error, Lua, Result, Table, UserDataRef}; use mlua::{Error, Lua, Result, Table, UserDataRef};
use super::Client;
use crate::hacks::anti_knockback::AntiKnockback;
pub fn air_supply(_lua: &Lua, client: &Client) -> Result<i32> { pub fn air_supply(_lua: &Lua, client: &Client) -> Result<i32> {
Ok(client.component::<AirSupply>().0) Ok(client.component::<AirSupply>().0)
} }

View File

@ -1,3 +1,4 @@
use super::{Client, Direction, Vec3};
use azalea::{ use azalea::{
BlockPos, BlockPos,
blocks::{BlockState, BlockStates}, blocks::{BlockState, BlockStates},
@ -10,8 +11,6 @@ use azalea::{
}; };
use mlua::{Function, Lua, Result, Table, UserDataRef}; use mlua::{Function, Lua, Result, Table, UserDataRef};
use super::{Client, Direction, Vec3};
pub fn blocks( pub fn blocks(
_lua: &Lua, _lua: &Lua,
client: &Client, client: &Client,

View File

@ -2,11 +2,10 @@
mod queries; mod queries;
pub mod find; pub mod find;
use super::{Client, Direction, Vec3};
use azalea::{BlockPos, auto_tool::AutoToolClientExt, blocks::BlockState, world::InstanceName}; use azalea::{BlockPos, auto_tool::AutoToolClientExt, blocks::BlockState, world::InstanceName};
use mlua::{Lua, Result, Table}; use mlua::{Lua, Result, Table};
use super::{Client, Direction, Vec3};
pub fn best_tool_for_block(lua: &Lua, client: &Client, block_state: u16) -> Result<Table> { pub fn best_tool_for_block(lua: &Lua, client: &Client, block_state: u16) -> Result<Table> {
let result = client.best_tool_in_hotbar_for_block(BlockState { id: block_state }); let result = client.best_tool_in_hotbar_for_block(BlockState { id: block_state });
let table = lua.create_table()?; let table = lua.create_table()?;

View File

@ -1,9 +1,7 @@
use std::time::{SystemTime, UNIX_EPOCH}; use crate::ListenerMap;
use futures::executor::block_on; use futures::executor::block_on;
use mlua::{Function, Lua, Result, Table}; use mlua::{Function, Lua, Result, Table};
use std::time::{SystemTime, UNIX_EPOCH};
use crate::ListenerMap;
pub fn register_globals(lua: &Lua, globals: &Table, event_listeners: ListenerMap) -> Result<()> { pub fn register_globals(lua: &Lua, globals: &Table, event_listeners: ListenerMap) -> Result<()> {
let m = event_listeners.clone(); let m = event_listeners.clone();

View File

@ -1,12 +1,10 @@
use std::sync::Arc; use super::room::Room;
use matrix_sdk::{ use matrix_sdk::{
Client as MatrixClient, Client as MatrixClient,
ruma::{RoomId, UserId}, ruma::{RoomId, UserId},
}; };
use mlua::{Error, UserData, UserDataFields, UserDataMethods}; use mlua::{Error, UserData, UserDataFields, UserDataMethods};
use std::sync::Arc;
use super::room::Room;
pub struct Client(pub Arc<MatrixClient>); pub struct Client(pub Arc<MatrixClient>);

View File

@ -1,3 +1,4 @@
use super::member::Member;
use matrix_sdk::{ use matrix_sdk::{
RoomMemberships, RoomMemberships,
room::Room as MatrixRoom, room::Room as MatrixRoom,
@ -5,8 +6,6 @@ use matrix_sdk::{
}; };
use mlua::{Error, UserData, UserDataFields, UserDataMethods}; use mlua::{Error, UserData, UserDataFields, UserDataMethods};
use super::member::Member;
pub struct Room(pub MatrixRoom); pub struct Room(pub MatrixRoom);
impl UserData for Room { impl UserData for Room {

View File

@ -13,15 +13,13 @@ pub mod vec3;
#[cfg(feature = "matrix")] #[cfg(feature = "matrix")]
pub mod matrix; pub mod matrix;
use crate::{ListenerMap, build_info::built};
use mlua::{Lua, Table};
use std::{ use std::{
fmt::{self, Display, Formatter}, fmt::{self, Display, Formatter},
io, io,
}; };
use mlua::{Lua, Table};
use crate::{ListenerMap, build_info::built};
#[derive(Debug)] #[derive(Debug)]
pub enum Error { pub enum Error {
CreateEnv(mlua::Error), CreateEnv(mlua::Error),

View File

@ -1,12 +1,11 @@
use log::error;
use mlua::{Lua, Result, Table};
use std::{ use std::{
ffi::OsString, ffi::OsString,
process::{Command, Stdio}, process::{Command, Stdio},
thread, thread,
}; };
use log::error;
use mlua::{Lua, Result, Table};
pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> { pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> {
globals.set( globals.set(
"system", "system",

View File

@ -1,6 +1,5 @@
use std::time::Duration;
use mlua::{Error, Function, Lua, Result, Table}; use mlua::{Error, Function, Lua, Result, Table};
use std::time::Duration;
use tokio::time::{sleep, timeout}; use tokio::time::{sleep, timeout};
pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> { pub fn register_globals(lua: &Lua, globals: &Table) -> Result<()> {

View File

@ -13,13 +13,6 @@ mod replay;
#[cfg(feature = "matrix")] #[cfg(feature = "matrix")]
mod matrix; mod matrix;
use std::{
collections::HashMap,
env,
fs::{OpenOptions, read_to_string},
sync::Arc,
};
use anyhow::Context; use anyhow::Context;
use arguments::Arguments; use arguments::Arguments;
use azalea::{ use azalea::{
@ -38,6 +31,12 @@ use hacks::HacksPlugin;
use log::debug; use log::debug;
use mlua::{Function, Lua, Table}; use mlua::{Function, Lua, Table};
use replay::{plugin::RecordPlugin, recorder::Recorder}; use replay::{plugin::RecordPlugin, recorder::Recorder};
use std::{
collections::HashMap,
env,
fs::{OpenOptions, read_to_string},
sync::Arc,
};
#[cfg(feature = "mimalloc")] #[cfg(feature = "mimalloc")]
#[global_allocator] #[global_allocator]

View File

@ -1,5 +1,8 @@
use std::time::Duration; use super::Context;
use crate::{
events::call_listeners,
lua::{eval, exec, matrix::room::Room as LuaRoom, reload},
};
use anyhow::Result; use anyhow::Result;
use log::{debug, error}; use log::{debug, error};
use matrix_sdk::{ use matrix_sdk::{
@ -10,14 +13,9 @@ use matrix_sdk::{
message::{MessageType, OriginalSyncRoomMessageEvent, RoomMessageEventContent}, message::{MessageType, OriginalSyncRoomMessageEvent, RoomMessageEventContent},
}, },
}; };
use std::time::Duration;
use tokio::time::sleep; use tokio::time::sleep;
use super::Context;
use crate::{
events::call_listeners,
lua::{eval, exec, matrix::room::Room as LuaRoom, reload},
};
pub async fn on_regular_room_message( pub async fn on_regular_room_message(
event: OriginalSyncRoomMessageEvent, event: OriginalSyncRoomMessageEvent,
room: Room, room: Room,

View File

@ -1,8 +1,7 @@
mod bot; mod bot;
mod verification; mod verification;
use std::{path::Path, sync::Arc}; use crate::{State, lua::matrix::client::Client as LuaClient};
use anyhow::{Context as _, Result}; use anyhow::{Context as _, Result};
use bot::{on_regular_room_message, on_stripped_state_member}; use bot::{on_regular_room_message, on_stripped_state_member};
use log::{error, warn}; use log::{error, warn};
@ -11,11 +10,10 @@ use matrix_sdk::{
}; };
use mlua::Table; use mlua::Table;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::{path::Path, sync::Arc};
use tokio::fs; use tokio::fs;
use verification::{on_device_key_verification_request, on_room_message_verification_request}; use verification::{on_device_key_verification_request, on_room_message_verification_request};
use crate::{State, lua::matrix::client::Client as LuaClient};
#[derive(Clone)] #[derive(Clone)]
pub struct Context { pub struct Context {
state: State, state: State,

View File

@ -1,5 +1,3 @@
use std::time::Duration;
use anyhow::{Context, Result}; use anyhow::{Context, Result};
use futures::StreamExt; use futures::StreamExt;
use log::{error, info, warn}; use log::{error, info, warn};
@ -17,6 +15,7 @@ use matrix_sdk::{
}, },
}, },
}; };
use std::time::Duration;
use tokio::time::sleep; use tokio::time::sleep;
async fn confirm_emojis(sas: SasVerification, emoji: [Emoji; 7]) { async fn confirm_emojis(sas: SasVerification, emoji: [Emoji; 7]) {

View File

@ -1,7 +1,6 @@
#![allow(clippy::needless_pass_by_value)] #![allow(clippy::needless_pass_by_value)]
use std::sync::Arc; use super::recorder::Recorder;
use azalea::{ use azalea::{
ecs::{event::EventReader, system::Query}, ecs::{event::EventReader, system::Query},
packet::{ packet::{
@ -16,8 +15,7 @@ use bevy_app::{First, Plugin};
use bevy_ecs::{schedule::IntoSystemConfigs, system::ResMut}; use bevy_ecs::{schedule::IntoSystemConfigs, system::ResMut};
use log::error; use log::error;
use parking_lot::Mutex; use parking_lot::Mutex;
use std::sync::Arc;
use super::recorder::Recorder;
pub struct RecordPlugin { pub struct RecordPlugin {
pub recorder: Arc<Mutex<Option<Recorder>>>, pub recorder: Arc<Mutex<Option<Recorder>>>,

View File

@ -1,9 +1,4 @@
use std::{ use crate::build_info;
fs::File,
io::{BufWriter, Write},
time::{Instant, SystemTime, UNIX_EPOCH},
};
use anyhow::Result; use anyhow::Result;
use azalea::{ use azalea::{
buf::AzaleaWriteVar, buf::AzaleaWriteVar,
@ -12,10 +7,13 @@ use azalea::{
}; };
use log::debug; use log::debug;
use serde_json::json; use serde_json::json;
use std::{
fs::File,
io::{BufWriter, Write},
time::{Instant, SystemTime, UNIX_EPOCH},
};
use zip::{ZipWriter, write::SimpleFileOptions}; use zip::{ZipWriter, write::SimpleFileOptions};
use crate::build_info;
#[derive(Resource)] #[derive(Resource)]
pub struct Recorder { pub struct Recorder {
zip_writer: BufWriter<ZipWriter<File>>, zip_writer: BufWriter<ZipWriter<File>>,
@ -58,7 +56,7 @@ impl Recorder {
"fileFormat": "MCPR", "fileFormat": "MCPR",
"fileFormatVersion": 14, "fileFormatVersion": 14,
"protocol": PROTOCOL_VERSION, "protocol": PROTOCOL_VERSION,
"generator": format!("ErrorNoWatcher {}", build_info::version_formatted()), "generator": format!("errornowatcher {}", build_info::version_formatted()),
}) })
.to_string() .to_string()
.as_bytes(), .as_bytes(),