1
2
Fork 0
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:
mat 2023-11-06 18:04:48 -06:00
parent 48b5d12171
commit ee55453fbf
43 changed files with 355 additions and 341 deletions

416
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -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"] }

View file

@ -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"

View file

@ -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"]

View file

@ -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"] }

View file

@ -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"

View file

@ -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"]

View file

@ -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();

View file

@ -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()

View file

@ -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();

View file

@ -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();
}
}

View file

@ -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>();
}
}

View file

@ -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");

View file

@ -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 {

View file

@ -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 {

View file

@ -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()) {

View file

@ -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 =

View file

@ -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) => {

View file

@ -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()));

View file

@ -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()));

View file

@ -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)

View file

@ -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 {

View file

@ -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())

View file

@ -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"]

View file

@ -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"] }

View file

@ -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"

View file

@ -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.

View file

@ -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"

View file

@ -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"]}

View file

@ -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]

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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 = []

View file

@ -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" }

View file

@ -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]

View file

@ -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 {

View file

@ -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,
});

View file

@ -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);

View file

@ -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)

View file

@ -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;
};

View file

@ -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()

View file

@ -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