mirror of
https://github.com/mat-1/azalea.git
synced 2025-08-02 06:16:04 +00:00
bevy 0.12
This commit is contained in:
parent
48b5d12171
commit
ee55453fbf
43 changed files with 355 additions and 341 deletions
416
Cargo.lock
generated
416
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -11,22 +11,22 @@ version = "0.8.0"
|
|||
[dependencies]
|
||||
azalea-buf = { path = "../azalea-buf", version = "0.8.0" }
|
||||
azalea-crypto = { path = "../azalea-crypto", version = "0.8.0" }
|
||||
base64 = "0.21.4"
|
||||
base64 = "0.21.5"
|
||||
chrono = { version = "0.4.31", default-features = false, features = ["serde"] }
|
||||
log = "0.4.20"
|
||||
num-bigint = "0.4.4"
|
||||
once_cell = "1.18.0"
|
||||
reqwest = { version = "0.11.21", default-features = false, features = [
|
||||
reqwest = { version = "0.11.22", default-features = false, features = [
|
||||
"json",
|
||||
"rustls-tls",
|
||||
] }
|
||||
rsa = "0.9.2"
|
||||
serde = { version = "1.0.188", features = ["derive"] }
|
||||
serde_json = "1.0.107"
|
||||
thiserror = "1.0.49"
|
||||
tokio = { version = "1.32.0", features = ["fs"] }
|
||||
uuid = { version = "1.4.1", features = ["serde"] }
|
||||
rsa = "0.9.3"
|
||||
serde = { version = "1.0.190", features = ["derive"] }
|
||||
serde_json = "1.0.108"
|
||||
thiserror = "1.0.50"
|
||||
tokio = { version = "1.33.0", features = ["fs"] }
|
||||
uuid = { version = "1.5.0", features = ["serde"] }
|
||||
|
||||
[dev-dependencies]
|
||||
env_logger = "0.10.0"
|
||||
tokio = { version = "1.32.0", features = ["full"] }
|
||||
tokio = { version = "1.33.0", features = ["full"] }
|
||||
|
|
|
@ -12,6 +12,6 @@ proc-macro = true
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
proc-macro2 = "1.0.67"
|
||||
proc-macro2 = "1.0.69"
|
||||
quote = "1.0.33"
|
||||
syn = "2.0.37"
|
||||
syn = "2.0.39"
|
||||
|
|
|
@ -10,11 +10,11 @@ version = "0.8.0"
|
|||
|
||||
[dependencies]
|
||||
azalea-buf-macros = { path = "./azalea-buf-macros", version = "0.8.0" }
|
||||
byteorder = "^1.4.3"
|
||||
byteorder = "^1.5.0"
|
||||
log = "0.4.20"
|
||||
serde_json = { version = "^1.0", optional = true }
|
||||
thiserror = "1.0.49"
|
||||
uuid = "^1.4.1"
|
||||
thiserror = "1.0.50"
|
||||
uuid = "^1.5.0"
|
||||
|
||||
[features]
|
||||
serde_json = ["dep:serde_json"]
|
||||
|
|
|
@ -11,6 +11,6 @@ proc-macro = true
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
proc-macro2 = "^1.0.67"
|
||||
proc-macro2 = "^1.0.69"
|
||||
quote = "^1.0.33"
|
||||
syn = { version = "^2.0.37", features = ["extra-traits"] }
|
||||
syn = { version = "^2.0.39", features = ["extra-traits"] }
|
||||
|
|
|
@ -19,4 +19,4 @@ azalea-language = { path = "../azalea-language", version = "0.8.0" }
|
|||
log = "0.4.20"
|
||||
once_cell = "1.18.0"
|
||||
serde = { version = "^1.0", features = ["derive"] }
|
||||
serde_json = "^1.0.107"
|
||||
serde_json = "^1.0.108"
|
||||
|
|
|
@ -9,9 +9,9 @@ version = "0.8.0"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
reqwest = { version = "0.11.21", default-features = false }
|
||||
reqwest = { version = "0.11.22", default-features = false }
|
||||
anyhow = "1.0.75"
|
||||
async-trait = "0.1.73"
|
||||
async-trait = "0.1.74"
|
||||
azalea-auth = { path = "../azalea-auth", version = "0.8.0" }
|
||||
azalea-block = { path = "../azalea-block", version = "0.8.0" }
|
||||
azalea-nbt = { path = "../azalea-nbt", version = "0.8.0" }
|
||||
|
@ -23,25 +23,25 @@ azalea-buf = { path = "../azalea-buf", version = "0.8.0" }
|
|||
azalea-protocol = { path = "../azalea-protocol", version = "0.8.0" }
|
||||
azalea-registry = { path = "../azalea-registry", version = "0.8.0" }
|
||||
azalea-world = { path = "../azalea-world", version = "0.8.0" }
|
||||
bevy_app = "0.11.3"
|
||||
bevy_ecs = "0.11.3"
|
||||
bevy_log = { version = "0.11.3", optional = true }
|
||||
bevy_tasks = "0.11.3"
|
||||
bevy_time = "0.11.3"
|
||||
bevy_app = "0.12.0"
|
||||
bevy_ecs = "0.12.0"
|
||||
bevy_log = { version = "0.12.0", optional = true }
|
||||
bevy_tasks = "0.12.0"
|
||||
bevy_time = "0.12.0"
|
||||
azalea-inventory = { path = "../azalea-inventory", version = "0.8.0" }
|
||||
derive_more = { version = "0.99.17", features = ["deref", "deref_mut"] }
|
||||
futures = "0.3.28"
|
||||
futures = "0.3.29"
|
||||
log = "0.4.20"
|
||||
nohash-hasher = "0.2.0"
|
||||
once_cell = "1.18.0"
|
||||
parking_lot = { version = "^0.12.1", features = ["deadlock_detection"] }
|
||||
regex = "1.9.6"
|
||||
thiserror = "^1.0.49"
|
||||
tokio = { version = "^1.32.0", features = ["sync"] }
|
||||
uuid = "^1.4.1"
|
||||
regex = "1.10.2"
|
||||
thiserror = "^1.0.50"
|
||||
tokio = { version = "^1.33.0", features = ["sync"] }
|
||||
uuid = "^1.5.0"
|
||||
azalea-entity = { version = "0.8.0", path = "../azalea-entity" }
|
||||
serde_json = "1.0.107"
|
||||
serde = "1.0.188"
|
||||
serde_json = "1.0.108"
|
||||
serde = "1.0.190"
|
||||
|
||||
[features]
|
||||
default = ["log"]
|
||||
|
|
|
@ -81,7 +81,7 @@ pub fn handle_attack_event(
|
|||
mut send_packet_events: EventWriter<SendPacketEvent>,
|
||||
mut swing_arm_event: EventWriter<SwingArmEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let (game_mode, mut ticks_since_last_attack, mut physics, mut sprinting, sneaking) =
|
||||
query.get_mut(event.entity).unwrap();
|
||||
|
||||
|
|
|
@ -199,7 +199,7 @@ fn handle_send_chat_event(
|
|||
mut events: EventReader<SendChatEvent>,
|
||||
mut send_chat_kind_events: EventWriter<SendChatKindEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if event.content.starts_with('/') {
|
||||
send_chat_kind_events.send(SendChatKindEvent {
|
||||
entity: event.entity,
|
||||
|
@ -242,7 +242,7 @@ fn handle_send_chat_kind_event(
|
|||
mut events: EventReader<SendChatKindEvent>,
|
||||
mut send_packet_events: EventWriter<SendPacketEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let content = event
|
||||
.content
|
||||
.chars()
|
||||
|
|
|
@ -79,7 +79,7 @@ pub fn handle_chunk_batch_start_event(
|
|||
mut query: Query<&mut ChunkBatchInfo>,
|
||||
mut events: EventReader<ChunkBatchStartEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Ok(mut chunk_batch_info) = query.get_mut(event.entity) {
|
||||
chunk_batch_info.start_time = Instant::now();
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ pub fn handle_chunk_batch_finished_event(
|
|||
mut events: EventReader<ChunkBatchFinishedEvent>,
|
||||
mut send_packets: EventWriter<SendPacketEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Ok(mut chunk_batch_info) = query.get_mut(event.entity) {
|
||||
chunk_batch_info.batch_finished(event.batch_size);
|
||||
let desired_chunks_per_tick = chunk_batch_info.desired_chunks_per_tick();
|
||||
|
|
|
@ -59,11 +59,11 @@ use bevy_ecs::{
|
|||
bundle::Bundle,
|
||||
component::Component,
|
||||
entity::Entity,
|
||||
schedule::{IntoSystemConfigs, LogLevel, ScheduleBuildSettings, ScheduleLabel},
|
||||
schedule::{InternedScheduleLabel, IntoSystemConfigs, LogLevel, ScheduleBuildSettings},
|
||||
system::{ResMut, Resource},
|
||||
world::World,
|
||||
};
|
||||
use bevy_time::{prelude::FixedTime, TimePlugin};
|
||||
use bevy_time::{Fixed, Time, TimePlugin};
|
||||
use derive_more::Deref;
|
||||
use log::{debug, error};
|
||||
use parking_lot::{Mutex, RwLock};
|
||||
|
@ -631,7 +631,7 @@ pub struct AzaleaPlugin;
|
|||
impl Plugin for AzaleaPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
// Minecraft ticks happen every 50ms
|
||||
app.insert_resource(FixedTime::new(Duration::from_millis(50)))
|
||||
app.insert_resource(Time::<Fixed>::from_duration(Duration::from_millis(50)))
|
||||
.add_systems(
|
||||
Update,
|
||||
(
|
||||
|
@ -674,14 +674,14 @@ pub fn start_ecs_runner(
|
|||
|
||||
async fn run_schedule_loop(
|
||||
ecs: Arc<Mutex<World>>,
|
||||
outer_schedule_label: Box<dyn ScheduleLabel>,
|
||||
outer_schedule_label: InternedScheduleLabel,
|
||||
mut run_schedule_receiver: mpsc::UnboundedReceiver<()>,
|
||||
) {
|
||||
loop {
|
||||
// whenever we get an event from run_schedule_receiver, run the schedule
|
||||
run_schedule_receiver.recv().await;
|
||||
let mut ecs = ecs.lock();
|
||||
ecs.run_schedule(&outer_schedule_label);
|
||||
ecs.run_schedule(outer_schedule_label);
|
||||
ecs.clear_trackers();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ pub fn remove_components_from_disconnected_players(
|
|||
mut commands: Commands,
|
||||
mut events: EventReader<DisconnectEvent>,
|
||||
) {
|
||||
for DisconnectEvent { entity } in events.iter() {
|
||||
for DisconnectEvent { entity } in events.read() {
|
||||
commands.entity(*entity).remove::<JoinedClientBundle>();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -142,7 +142,7 @@ fn login_listener(query: Query<&LocalPlayerEvents, Added<MinecraftEntityId>>) {
|
|||
}
|
||||
|
||||
fn chat_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<ChatReceivedEvent>) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let local_player_events = query
|
||||
.get(event.entity)
|
||||
.expect("Non-local entities shouldn't be able to receive chat events");
|
||||
|
@ -160,7 +160,7 @@ fn tick_listener(query: Query<&LocalPlayerEvents, With<InstanceName>>) {
|
|||
}
|
||||
|
||||
fn packet_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<PacketEvent>) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let local_player_events = query
|
||||
.get(event.entity)
|
||||
.expect("Non-local entities shouldn't be able to receive add player events");
|
||||
|
@ -171,7 +171,7 @@ fn packet_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<Pac
|
|||
}
|
||||
|
||||
fn add_player_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<AddPlayerEvent>) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let local_player_events = query
|
||||
.get(event.entity)
|
||||
.expect("Non-local entities shouldn't be able to receive add player events");
|
||||
|
@ -185,7 +185,7 @@ fn update_player_listener(
|
|||
query: Query<&LocalPlayerEvents>,
|
||||
mut events: EventReader<UpdatePlayerEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let local_player_events = query
|
||||
.get(event.entity)
|
||||
.expect("Non-local entities shouldn't be able to receive update player events");
|
||||
|
@ -199,7 +199,7 @@ fn remove_player_listener(
|
|||
query: Query<&LocalPlayerEvents>,
|
||||
mut events: EventReader<RemovePlayerEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let local_player_events = query
|
||||
.get(event.entity)
|
||||
.expect("Non-local entities shouldn't be able to receive remove player events");
|
||||
|
@ -210,7 +210,7 @@ fn remove_player_listener(
|
|||
}
|
||||
|
||||
pub fn death_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<DeathEvent>) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Ok(local_player_events) = query.get(event.entity) {
|
||||
local_player_events
|
||||
.send(Event::Death(event.packet.clone().map(|p| p.into())))
|
||||
|
@ -220,7 +220,7 @@ pub fn death_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<
|
|||
}
|
||||
|
||||
fn keepalive_listener(query: Query<&LocalPlayerEvents>, mut events: EventReader<KeepAliveEvent>) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let local_player_events = query
|
||||
.get(event.entity)
|
||||
.expect("Non-local entities shouldn't be able to receive keepalive events");
|
||||
|
|
|
@ -115,7 +115,7 @@ pub fn handle_block_interact_event(
|
|||
mut query: Query<(Entity, &mut CurrentSequenceNumber, &HitResultComponent)>,
|
||||
mut send_packet_events: EventWriter<SendPacketEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let Ok((entity, mut sequence_number, hit_result)) = query.get_mut(event.entity) else {
|
||||
warn!("Sent BlockInteractEvent for entity that doesn't have the required components");
|
||||
continue;
|
||||
|
@ -312,7 +312,7 @@ pub fn handle_swing_arm_event(
|
|||
mut events: EventReader<SwingArmEvent>,
|
||||
mut send_packet_events: EventWriter<SendPacketEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
send_packet_events.send(SendPacketEvent {
|
||||
entity: event.entity,
|
||||
packet: ServerboundSwingPacket {
|
||||
|
|
|
@ -585,7 +585,7 @@ fn handle_menu_opened_event(
|
|||
mut events: EventReader<MenuOpenedEvent>,
|
||||
mut query: Query<&mut InventoryComponent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let mut inventory = query.get_mut(event.entity).unwrap();
|
||||
inventory.id = event.window_id as u8;
|
||||
inventory.container_menu = Some(Menu::from_kind(event.menu_type));
|
||||
|
@ -609,7 +609,7 @@ fn handle_container_close_event(
|
|||
mut client_side_events: EventWriter<ClientSideCloseContainerEvent>,
|
||||
mut send_packet_events: EventWriter<SendPacketEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let (entity, inventory) = query.get(event.entity).unwrap();
|
||||
if event.id != inventory.id {
|
||||
warn!(
|
||||
|
@ -643,7 +643,7 @@ pub fn handle_client_side_close_container_event(
|
|||
mut events: EventReader<ClientSideCloseContainerEvent>,
|
||||
mut query: Query<&mut InventoryComponent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let mut inventory = query.get_mut(event.entity).unwrap();
|
||||
inventory.container_menu = None;
|
||||
inventory.id = 0;
|
||||
|
@ -661,7 +661,7 @@ pub fn handle_container_click_event(
|
|||
mut events: EventReader<ContainerClickEvent>,
|
||||
mut send_packet_events: EventWriter<SendPacketEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let (entity, mut inventory) = query.get_mut(event.entity).unwrap();
|
||||
if inventory.id != event.window_id {
|
||||
warn!(
|
||||
|
@ -714,7 +714,7 @@ fn handle_set_container_content_event(
|
|||
mut events: EventReader<SetContainerContentEvent>,
|
||||
mut query: Query<&mut InventoryComponent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let mut inventory = query.get_mut(event.entity).unwrap();
|
||||
|
||||
if event.container_id != inventory.id {
|
||||
|
|
|
@ -172,7 +172,7 @@ pub fn handle_send_packet_event(
|
|||
mut send_packet_events: EventReader<SendPacketEvent>,
|
||||
mut query: Query<&mut RawConnection>,
|
||||
) {
|
||||
for event in send_packet_events.iter() {
|
||||
for event in send_packet_events.read() {
|
||||
if let Ok(raw_connection) = query.get_mut(event.entity) {
|
||||
// debug!("Sending packet: {:?}", event.packet);
|
||||
if let Err(e) = raw_connection.write_packet(event.packet.clone()) {
|
||||
|
|
|
@ -89,7 +89,7 @@ fn handle_start_mining_block_event(
|
|||
mut start_mining_events: EventWriter<StartMiningBlockWithDirectionEvent>,
|
||||
mut query: Query<&HitResultComponent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let hit_result = query.get_mut(event.entity).unwrap();
|
||||
let direction = if hit_result.block_pos == event.position {
|
||||
// we're looking at the block
|
||||
|
@ -136,7 +136,7 @@ fn handle_start_mining_block_with_direction_event(
|
|||
instances: Res<InstanceContainer>,
|
||||
mut commands: Commands,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let (
|
||||
instance_name,
|
||||
game_mode,
|
||||
|
@ -346,7 +346,7 @@ fn handle_finish_mining_block_event(
|
|||
)>,
|
||||
instances: Res<InstanceContainer>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let (instance_name, game_mode, inventory, abilities, permission_level, _sequence_number) =
|
||||
query.get_mut(event.entity).unwrap();
|
||||
let instance_lock = instances.get(instance_name).unwrap();
|
||||
|
@ -407,7 +407,7 @@ fn handle_stop_mining_block_event(
|
|||
mut query: Query<(&mut Mining, &MineBlockPos, &mut MineProgress)>,
|
||||
mut commands: Commands,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let (mut _mining, mine_block_pos, mut mine_progress) = query.get_mut(event.entity).unwrap();
|
||||
|
||||
let mine_block_pos =
|
||||
|
|
|
@ -408,7 +408,7 @@ pub fn handle_walk(
|
|||
mut events: EventReader<StartWalkEvent>,
|
||||
mut query: Query<(&mut PhysicsState, &mut Sprinting, &mut Attributes)>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Ok((mut physics_state, mut sprinting, mut attributes)) = query.get_mut(event.entity)
|
||||
{
|
||||
physics_state.move_direction = event.direction;
|
||||
|
@ -431,7 +431,7 @@ pub fn handle_sprint(
|
|||
mut query: Query<&mut PhysicsState>,
|
||||
mut events: EventReader<StartSprintEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Ok(mut physics_state) = query.get_mut(event.entity) {
|
||||
physics_state.move_direction = WalkDirection::from(event.direction);
|
||||
physics_state.trying_to_sprint = true;
|
||||
|
@ -486,7 +486,7 @@ pub enum KnockbackType {
|
|||
}
|
||||
|
||||
pub fn handle_knockback(mut query: Query<&mut Physics>, mut events: EventReader<KnockbackEvent>) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Ok(mut physics) = query.get_mut(event.entity) {
|
||||
match event.knockback {
|
||||
KnockbackType::Set(velocity) => {
|
||||
|
|
|
@ -70,7 +70,7 @@ pub fn process_packet_events(ecs: &mut World) {
|
|||
for PacketEvent {
|
||||
entity: player_entity,
|
||||
packet,
|
||||
} in events.iter()
|
||||
} in events.read()
|
||||
{
|
||||
// we do this so `ecs` isn't borrowed for the whole loop
|
||||
events_owned.push((*player_entity, packet.clone()));
|
||||
|
|
|
@ -59,7 +59,7 @@ use crate::{
|
|||
/// for PacketEvent {
|
||||
/// entity,
|
||||
/// packet,
|
||||
/// } in events.iter() {
|
||||
/// } in events.read() {
|
||||
/// match packet {
|
||||
/// ClientboundGamePacket::LevelParticles(p) => {
|
||||
/// // ...
|
||||
|
@ -181,7 +181,7 @@ pub fn process_packet_events(ecs: &mut World) {
|
|||
for PacketEvent {
|
||||
entity: player_entity,
|
||||
packet,
|
||||
} in events.iter()
|
||||
} in events.read()
|
||||
{
|
||||
// we do this so `ecs` isn't borrowed for the whole loop
|
||||
events_owned.push((*player_entity, packet.clone()));
|
||||
|
|
|
@ -37,7 +37,7 @@ pub fn retroactively_add_game_profile_component(
|
|||
mut events: EventReader<AddPlayerEvent>,
|
||||
entity_uuid_index: Res<EntityUuidIndex>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Some(entity) = entity_uuid_index.get(&event.info.uuid) {
|
||||
commands
|
||||
.entity(entity)
|
||||
|
|
|
@ -25,7 +25,7 @@ pub fn perform_respawn(
|
|||
mut events: EventReader<PerformRespawnEvent>,
|
||||
mut send_packets: EventWriter<SendPacketEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
send_packets.send(SendPacketEvent {
|
||||
entity: event.entity,
|
||||
packet: ServerboundClientCommandPacket {
|
||||
|
|
|
@ -110,7 +110,7 @@ impl TaskPoolOptions {
|
|||
|
||||
remaining_threads = remaining_threads.saturating_sub(io_threads);
|
||||
|
||||
IoTaskPool::init(|| {
|
||||
IoTaskPool::get_or_init(|| {
|
||||
TaskPoolBuilder::default()
|
||||
.num_threads(io_threads)
|
||||
.thread_name("IO Task Pool".to_string())
|
||||
|
@ -126,7 +126,7 @@ impl TaskPoolOptions {
|
|||
|
||||
remaining_threads = remaining_threads.saturating_sub(async_compute_threads);
|
||||
|
||||
AsyncComputeTaskPool::init(|| {
|
||||
AsyncComputeTaskPool::get_or_init(|| {
|
||||
TaskPoolBuilder::default()
|
||||
.num_threads(async_compute_threads)
|
||||
.thread_name("Async Compute Task Pool".to_string())
|
||||
|
@ -141,7 +141,7 @@ impl TaskPoolOptions {
|
|||
.compute
|
||||
.get_number_of_threads(remaining_threads, total_threads);
|
||||
|
||||
ComputeTaskPool::init(|| {
|
||||
ComputeTaskPool::get_or_init(|| {
|
||||
TaskPoolBuilder::default()
|
||||
.num_threads(compute_threads)
|
||||
.thread_name("Compute Task Pool".to_string())
|
||||
|
|
|
@ -13,11 +13,11 @@ azalea-buf = { path = "../azalea-buf", version = "0.8.0" }
|
|||
azalea-inventory = { version = "0.8.0", path = "../azalea-inventory" }
|
||||
azalea-nbt = { path = "../azalea-nbt", version = "0.8.0" }
|
||||
azalea-registry = { path = "../azalea-registry", version = "0.8.0" }
|
||||
bevy_ecs = { version = "0.11.3", default-features = false, optional = true }
|
||||
bevy_ecs = { version = "0.12.0", default-features = false, optional = true }
|
||||
nohash-hasher = "0.2.0"
|
||||
num-traits = "0.2.16"
|
||||
num-traits = "0.2.17"
|
||||
serde = { version = "^1.0", optional = true }
|
||||
uuid = "^1.4.1"
|
||||
uuid = "^1.5.0"
|
||||
|
||||
[features]
|
||||
bevy_ecs = ["dep:bevy_ecs"]
|
||||
|
|
|
@ -14,11 +14,11 @@ azalea-buf = { path = "../azalea-buf", version = "0.8.0" }
|
|||
cfb8 = "0.8.1"
|
||||
num-bigint = "^0.4.4"
|
||||
rand = { version = "^0.8.5", features = ["getrandom"] }
|
||||
rsa = { version = "0.9.2", features = ["sha2"] }
|
||||
rsa = { version = "0.9.3", features = ["sha2"] }
|
||||
rsa_public_encrypt_pkcs1 = "0.4.0"
|
||||
sha-1 = "^0.10.1"
|
||||
sha2 = "0.10.8"
|
||||
uuid = "^1.4.1"
|
||||
uuid = "^1.5.0"
|
||||
|
||||
[dev-dependencies]
|
||||
criterion = { version = "^0.5.1", features = ["html_reports"] }
|
||||
|
|
|
@ -17,12 +17,12 @@ azalea-inventory = { version = "0.8.0", path = "../azalea-inventory" }
|
|||
azalea-nbt = { version = "0.8.0", path = "../azalea-nbt" }
|
||||
azalea-registry = { version = "0.8.0", path = "../azalea-registry" }
|
||||
azalea-world = { version = "0.8.0", path = "../azalea-world" }
|
||||
bevy_app = "0.11.3"
|
||||
bevy_ecs = "0.11.3"
|
||||
bevy_app = "0.12.0"
|
||||
bevy_ecs = "0.12.0"
|
||||
derive_more = "0.99.17"
|
||||
enum-as-inner = "0.6.0"
|
||||
log = "0.4.20"
|
||||
nohash-hasher = "0.2.0"
|
||||
parking_lot = "0.12.1"
|
||||
thiserror = "1.0.49"
|
||||
uuid = "1.4.1"
|
||||
thiserror = "1.0.50"
|
||||
uuid = "1.5.0"
|
||||
|
|
|
@ -22,7 +22,7 @@ use bevy_ecs::{
|
|||
prelude::{Component, Entity},
|
||||
query::With,
|
||||
system::{EntityCommand, Query},
|
||||
world::{EntityMut, World},
|
||||
world::{EntityWorldMut, World},
|
||||
};
|
||||
use derive_more::{Deref, DerefMut};
|
||||
use log::warn;
|
||||
|
@ -44,7 +44,7 @@ use crate::LocalEntity;
|
|||
pub struct RelativeEntityUpdate {
|
||||
pub partial_world: Arc<RwLock<PartialInstance>>,
|
||||
// a function that takes the entity and updates it
|
||||
pub update: Box<dyn FnOnce(&mut EntityMut) + Send + Sync>,
|
||||
pub update: Box<dyn FnOnce(&mut EntityWorldMut) + Send + Sync>,
|
||||
}
|
||||
|
||||
/// A component that counts the number of times this entity has been modified.
|
||||
|
|
|
@ -12,6 +12,6 @@ proc-macro = true
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
proc-macro2 = "1.0.67"
|
||||
proc-macro2 = "1.0.69"
|
||||
quote = "1.0.33"
|
||||
syn = "2.0.37"
|
||||
syn = "2.0.39"
|
||||
|
|
|
@ -11,5 +11,5 @@ version = "0.8.0"
|
|||
[dependencies]
|
||||
once_cell = "1.18.0"
|
||||
serde = "^1.0"
|
||||
serde_json = "^1.0.107"
|
||||
serde_json = "^1.0.108"
|
||||
# tokio = {version = "^1.21.2", features = ["fs"]}
|
||||
|
|
|
@ -10,18 +10,18 @@ repository = "https://github.com/azalea-rs/azalea/tree/main/azalea-nbt"
|
|||
|
||||
[dependencies]
|
||||
azalea-buf = { path = "../azalea-buf", version = "0.8.0" }
|
||||
byteorder = "^1.4.3"
|
||||
byteorder = "^1.5.0"
|
||||
compact_str = { version = "0.7.1", features = ["serde"] }
|
||||
enum-as-inner = "0.6.0"
|
||||
flate2 = "^1.0.27"
|
||||
flate2 = "^1.0.28"
|
||||
log = "0.4.20"
|
||||
serde = { version = "^1.0", features = ["derive"], optional = true }
|
||||
thiserror = "1.0.49"
|
||||
thiserror = "1.0.50"
|
||||
|
||||
[dev-dependencies]
|
||||
criterion = { version = "^0.5.1", features = ["html_reports"] }
|
||||
graphite_binary = "0.1.0"
|
||||
valence_nbt = "0.7.0"
|
||||
valence_nbt = "0.8.0"
|
||||
fastnbt = "2.4.4"
|
||||
|
||||
[features]
|
||||
|
|
|
@ -15,12 +15,12 @@ azalea-entity = { version = "0.8.0", path = "../azalea-entity" }
|
|||
azalea-inventory = { version = "0.8.0", path = "../azalea-inventory" }
|
||||
azalea-registry = { path = "../azalea-registry", version = "0.8.0" }
|
||||
azalea-world = { path = "../azalea-world", version = "0.8.0" }
|
||||
bevy_app = "0.11.3"
|
||||
bevy_ecs = "0.11.3"
|
||||
bevy_app = "0.12.0"
|
||||
bevy_ecs = "0.12.0"
|
||||
log = "0.4.20"
|
||||
once_cell = "1.18.0"
|
||||
parking_lot = "^0.12.1"
|
||||
|
||||
[dev-dependencies]
|
||||
bevy_time = "0.11.3"
|
||||
uuid = "^1.4.1"
|
||||
bevy_time = "0.12.0"
|
||||
uuid = "^1.5.0"
|
||||
|
|
|
@ -9,7 +9,7 @@ version = "0.8.0"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
async-compression = { version = "^0.4.3", features = [
|
||||
async-compression = { version = "^0.4.4", features = [
|
||||
"tokio",
|
||||
"zlib",
|
||||
], optional = true }
|
||||
|
@ -33,23 +33,23 @@ azalea-nbt = { path = "../azalea-nbt", version = "^0.8.0", features = [
|
|||
azalea-protocol-macros = { path = "./azalea-protocol-macros", version = "0.8.0" }
|
||||
azalea-registry = { path = "../azalea-registry", version = "0.8.0" }
|
||||
azalea-world = { path = "../azalea-world", version = "0.8.0" }
|
||||
bevy_ecs = { version = "0.11.3", default-features = false }
|
||||
byteorder = "^1.4.3"
|
||||
bevy_ecs = { version = "0.12.0", default-features = false }
|
||||
byteorder = "^1.5.0"
|
||||
bytes = "^1.5.0"
|
||||
flate2 = "1.0.27"
|
||||
futures = "0.3.28"
|
||||
futures-lite = "1.13.0"
|
||||
futures-util = "0.3.28"
|
||||
flate2 = "1.0.28"
|
||||
futures = "0.3.29"
|
||||
futures-lite = "2.0.1"
|
||||
futures-util = "0.3.29"
|
||||
log = "0.4.20"
|
||||
serde = { version = "^1.0", features = ["serde_derive"] }
|
||||
serde_json = "^1.0.107"
|
||||
thiserror = "1.0.49"
|
||||
tokio = { version = "^1.32.0", features = ["io-util", "net", "macros"] }
|
||||
tokio-util = { version = "0.7.9", features = ["codec"] }
|
||||
trust-dns-resolver = { version = "^0.23.0", default-features = false, features = [
|
||||
serde_json = "^1.0.108"
|
||||
thiserror = "1.0.50"
|
||||
tokio = { version = "^1.33.0", features = ["io-util", "net", "macros"] }
|
||||
tokio-util = { version = "0.7.10", features = ["codec"] }
|
||||
trust-dns-resolver = { version = "^0.23.2", default-features = false, features = [
|
||||
"tokio-runtime",
|
||||
] }
|
||||
uuid = "1.4.1"
|
||||
uuid = "1.5.0"
|
||||
|
||||
[features]
|
||||
connecting = []
|
||||
|
@ -59,6 +59,6 @@ strict_registry = ["packets"]
|
|||
|
||||
[dev-dependencies]
|
||||
anyhow = "^1.0.75"
|
||||
tracing = "^0.1.37"
|
||||
tracing = "^0.1.40"
|
||||
tracing-subscriber = "^0.3.17"
|
||||
once_cell = "1.18.0"
|
||||
|
|
|
@ -11,6 +11,6 @@ proc-macro = true
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
proc-macro2 = "^1.0.67"
|
||||
proc-macro2 = "^1.0.69"
|
||||
quote = "^1.0.33"
|
||||
syn = "^2.0.37"
|
||||
syn = "^2.0.39"
|
||||
|
|
|
@ -12,9 +12,9 @@ proc-macro = true
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
proc-macro2 = "1.0.67"
|
||||
proc-macro2 = "1.0.69"
|
||||
quote = "1.0.33"
|
||||
syn = "2.0.37"
|
||||
syn = "2.0.39"
|
||||
|
||||
[features]
|
||||
serde = []
|
||||
|
|
|
@ -17,15 +17,15 @@ azalea-core = { path = "../azalea-core", version = "^0.8.0", features = [
|
|||
azalea-inventory = { version = "0.8.0", path = "../azalea-inventory" }
|
||||
azalea-nbt = { path = "../azalea-nbt", version = "0.8.0" }
|
||||
azalea-registry = { path = "../azalea-registry", version = "0.8.0" }
|
||||
bevy_ecs = "0.11.3"
|
||||
bevy_ecs = "0.12.0"
|
||||
derive_more = { version = "0.99.17", features = ["deref", "deref_mut"] }
|
||||
enum-as-inner = "0.6.0"
|
||||
log = "0.4.20"
|
||||
nohash-hasher = "0.2.0"
|
||||
once_cell = "1.18.0"
|
||||
parking_lot = "^0.12.1"
|
||||
thiserror = "1.0.49"
|
||||
uuid = "1.4.1"
|
||||
thiserror = "1.0.50"
|
||||
uuid = "1.5.0"
|
||||
|
||||
[dev-dependencies]
|
||||
azalea-client = { path = "../azalea-client" }
|
||||
|
|
|
@ -13,7 +13,7 @@ pre-release-replacements = [
|
|||
|
||||
[dependencies]
|
||||
anyhow = "^1.0.75"
|
||||
async-trait = "0.1.73"
|
||||
async-trait = "0.1.74"
|
||||
azalea-block = { version = "0.8.0", path = "../azalea-block" }
|
||||
azalea-chat = { version = "0.8.0", path = "../azalea-chat" }
|
||||
azalea-client = { version = "0.8.0", path = "../azalea-client", default-features = false }
|
||||
|
@ -25,23 +25,23 @@ azalea-registry = { version = "0.8.0", path = "../azalea-registry" }
|
|||
azalea-world = { version = "0.8.0", path = "../azalea-world" }
|
||||
azalea-auth = { version = "0.8.0", path = "../azalea-auth" }
|
||||
azalea-brigadier = { version = "0.8.0", path = "../azalea-brigadier" }
|
||||
bevy_app = "0.11.3"
|
||||
bevy_ecs = "0.11.3"
|
||||
bevy_tasks = "0.11.3"
|
||||
bevy_app = "0.12.0"
|
||||
bevy_ecs = "0.12.0"
|
||||
bevy_tasks = { version = "0.12.0", features = ["multi-threaded"] }
|
||||
derive_more = { version = "0.99.17", features = ["deref", "deref_mut"] }
|
||||
futures = "0.3.28"
|
||||
futures-lite = "1.13.0"
|
||||
futures = "0.3.29"
|
||||
futures-lite = "2.0.1"
|
||||
log = "0.4.20"
|
||||
nohash-hasher = "0.2.0"
|
||||
num-traits = "0.2.16"
|
||||
num-traits = "0.2.17"
|
||||
parking_lot = { version = "^0.12.1", features = ["deadlock_detection"] }
|
||||
priority-queue = "1.3.2"
|
||||
thiserror = "^1.0.49"
|
||||
tokio = "^1.32.0"
|
||||
uuid = "1.4.1"
|
||||
bevy_log = "0.11.3"
|
||||
thiserror = "^1.0.50"
|
||||
tokio = "^1.33.0"
|
||||
uuid = "1.5.0"
|
||||
bevy_log = "0.12.0"
|
||||
azalea-entity = { version = "0.8.0", path = "../azalea-entity" }
|
||||
bevy_time = "0.11.3"
|
||||
bevy_time = "0.12.0"
|
||||
rustc-hash = "1.1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
|
|
|
@ -30,7 +30,7 @@ fn accept_resource_pack(
|
|||
mut events: EventReader<ResourcePackEvent>,
|
||||
mut send_packet_events: EventWriter<SendPacketEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
send_packet_events.send(SendPacketEvent {
|
||||
entity: event.entity,
|
||||
packet: ServerboundResourcePackPacket {
|
||||
|
|
|
@ -24,7 +24,7 @@ fn auto_respawn(
|
|||
mut events: EventReader<DeathEvent>,
|
||||
mut perform_respawn_events: EventWriter<PerformRespawnEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
perform_respawn_events.send(PerformRespawnEvent {
|
||||
entity: event.entity,
|
||||
});
|
||||
|
|
|
@ -148,7 +148,7 @@ pub fn jump_listener(
|
|||
mut query: Query<(&mut Jumping, &mut Bot)>,
|
||||
mut events: EventReader<JumpEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Ok((mut jumping, mut bot)) = query.get_mut(event.entity) {
|
||||
**jumping = true;
|
||||
bot.jumping_once = true;
|
||||
|
@ -167,7 +167,7 @@ fn look_at_listener(
|
|||
mut events: EventReader<LookAtEvent>,
|
||||
mut query: Query<(&Position, &EyeHeight, &mut LookDirection)>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Ok((position, eye_height, mut look_direction)) = query.get_mut(event.entity) {
|
||||
let (y_rot, x_rot) =
|
||||
direction_looking_at(&position.up(eye_height.into()), &event.position);
|
||||
|
|
|
@ -140,7 +140,7 @@ impl ContainerHandle {
|
|||
///
|
||||
/// Note that any modifications you make to the `Menu` you're given will not
|
||||
/// actually cause any packets to be sent. If you're trying to modify your
|
||||
/// inventory, use [`Self::open_inventory`] instead
|
||||
/// inventory, use [`Client::open_inventory`] instead
|
||||
pub fn menu(&self) -> Option<Menu> {
|
||||
let ecs = self.client.ecs.lock();
|
||||
let inventory = ecs
|
||||
|
@ -179,7 +179,7 @@ impl ContainerHandle {
|
|||
pub struct WaitingForInventoryOpen;
|
||||
|
||||
fn handle_menu_opened_event(mut commands: Commands, mut events: EventReader<PacketEvent>) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let ClientboundGamePacket::ContainerSetContent { .. } = event.packet {
|
||||
commands
|
||||
.entity(event.entity)
|
||||
|
|
|
@ -185,7 +185,7 @@ fn goto_listener(
|
|||
) {
|
||||
let thread_pool = AsyncComputeTaskPool::get();
|
||||
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let (mut pathfinder, executing_path, position, instance_name, inventory) = query
|
||||
.get_mut(event.entity)
|
||||
.expect("Called goto on an entity that's not in the world");
|
||||
|
@ -328,7 +328,7 @@ fn path_found_listener(
|
|||
instance_container: Res<InstanceContainer>,
|
||||
mut commands: Commands,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let (mut pathfinder, executing_path, instance_name, inventory) = query
|
||||
.get_mut(event.entity)
|
||||
.expect("Path found for an entity that doesn't have a pathfinder");
|
||||
|
@ -676,7 +676,7 @@ fn handle_stop_pathfinding_event(
|
|||
mut walk_events: EventWriter<StartWalkEvent>,
|
||||
mut commands: Commands,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let Ok((mut pathfinder, mut executing_path)) = query.get_mut(event.entity) else {
|
||||
continue;
|
||||
};
|
||||
|
|
|
@ -11,7 +11,7 @@ use azalea_entity::{
|
|||
use azalea_world::{ChunkStorage, Instance, InstanceContainer, InstanceName, MinecraftEntityId};
|
||||
use bevy_app::{App, FixedUpdate};
|
||||
use bevy_ecs::prelude::*;
|
||||
use bevy_time::fixed_timestep::FixedTime;
|
||||
use bevy_time::{Fixed, Time};
|
||||
use parking_lot::RwLock;
|
||||
|
||||
#[derive(Bundle, Clone)]
|
||||
|
@ -70,7 +70,7 @@ impl Simulation {
|
|||
azalea_client::task_pool::TaskPoolPlugin::default(),
|
||||
))
|
||||
// make sure it doesn't do fixed ticks without us telling it to
|
||||
.insert_resource(FixedTime::new(Duration::MAX))
|
||||
.insert_resource(Time::<Fixed>::from_duration(Duration::MAX))
|
||||
.insert_resource(InstanceContainer {
|
||||
instances: [(instance_name.clone(), Arc::downgrade(&instance.clone()))]
|
||||
.iter()
|
||||
|
|
|
@ -64,7 +64,7 @@ fn chat_listener(
|
|||
mut global_chat_state: ResMut<GlobalChatState>,
|
||||
mut new_chat_messages_events: EventWriter<NewChatMessageEvent>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
let mut client_chat_state = query.get_mut(event.entity);
|
||||
let mut client_chat_index = if let Ok(ref client_chat_state) = client_chat_state {
|
||||
client_chat_state.chat_index
|
||||
|
@ -119,7 +119,7 @@ fn update_min_index_and_shrink_queue(
|
|||
mut events: EventReader<NewChatMessageEvent>,
|
||||
swarm: Option<Res<Swarm>>,
|
||||
) {
|
||||
for event in events.iter() {
|
||||
for event in events.read() {
|
||||
if let Some(swarm) = &swarm {
|
||||
// it should also work if Swarm isn't present (so the tests don't need it)
|
||||
swarm
|
||||
|
|
Loading…
Add table
Reference in a new issue