rename Local to LocalEntity

This commit is contained in:
mat 2023-09-14 16:48:21 -05:00
parent dea4a656a5
commit 83784d5a35
14 changed files with 60 additions and 53 deletions

View file

@ -22,8 +22,8 @@ use azalea_auth::{game_profile::GameProfile, sessionserver::ClientSessionServerE
use azalea_chat::FormattedText;
use azalea_core::Vec3;
use azalea_entity::{
indexing::EntityIdIndex, metadata::Health, EntityPlugin, EntityUpdateSet, EyeHeight, Local,
Position,
indexing::EntityIdIndex, metadata::Health, EntityPlugin, EntityUpdateSet, EyeHeight,
LocalEntity, Position,
};
use azalea_physics::PhysicsPlugin;
use azalea_protocol::{
@ -316,7 +316,7 @@ impl Client {
mining: mining::MineBundle::default(),
attack: attack::AttackBundle::default(),
_local: Local,
_local: LocalEntity,
});
Ok((client, rx))
@ -584,7 +584,7 @@ impl Client {
}
/// A bundle for the components that are present on a local player that received
/// a login packet. If you want to filter for this, just use [`Local`].
/// a login packet. If you want to filter for this, just use [`LocalEntity`].
#[derive(Bundle)]
pub struct JoinedClientBundle {
pub local_player: LocalPlayer,
@ -606,7 +606,7 @@ pub struct JoinedClientBundle {
pub mining: mining::MineBundle,
pub attack: attack::AttackBundle,
pub _local: Local,
pub _local: LocalEntity,
}
pub struct AzaleaPlugin;

View file

@ -3,7 +3,7 @@ use std::ops::AddAssign;
use azalea_block::BlockState;
use azalea_core::{BlockHitResult, BlockPos, Direction, GameMode, Vec3};
use azalea_entity::{
clamp_look_direction, view_vector, Attributes, EyeHeight, Local, LookDirection, Position,
clamp_look_direction, view_vector, Attributes, EyeHeight, LocalEntity, LookDirection, Position,
};
use azalea_inventory::{ItemSlot, ItemSlotData};
use azalea_nbt::NbtList;
@ -318,7 +318,7 @@ pub fn handle_swing_arm_event(
fn update_modifiers_for_held_item(
mut query: Query<
(&mut Attributes, &InventoryComponent),
(With<Local>, Changed<InventoryComponent>),
(With<LocalEntity>, Changed<InventoryComponent>),
>,
) {
for (mut attributes, inventory) in &mut query {

View file

@ -23,10 +23,11 @@ use crate::{
/// world. If you have access to a [`Client`], you probably don't need to care
/// about this since `Client` gives you access to everything here.
///
/// You can also use the [`Local`] marker component for queries if you're only
/// checking for a local player and don't need the contents of this component.
/// You can also use the [`LocalEntity`] marker component for queries if you're
/// only checking for a local player and don't need the contents of this
/// component.
///
/// [`Local`]: azalea_entity::Local
/// [`LocalEntity`]: azalea_entity::LocalEntity
/// [`Client`]: crate::Client
#[derive(Component)]
pub struct LocalPlayer {

View file

@ -709,11 +709,10 @@ pub fn process_packet_events(ecs: &mut World) {
ClientboundGamePacket::TeleportEntity(p) => {
let mut system_state: SystemState<(
Commands,
Query<(&EntityIdIndex, &LocalPlayer, Option<&mut Physics>)>,
Query<(&EntityIdIndex, &LocalPlayer)>,
)> = SystemState::new(ecs);
let (mut commands, mut query) = system_state.get_mut(ecs);
let (entity_id_index, local_player, physics) =
query.get_mut(player_entity).unwrap();
let (entity_id_index, local_player) = query.get_mut(player_entity).unwrap();
let entity = entity_id_index.get(&MinecraftEntityId(p.id));
@ -741,11 +740,10 @@ pub fn process_packet_events(ecs: &mut World) {
ClientboundGamePacket::MoveEntityPos(p) => {
let mut system_state: SystemState<(
Commands,
Query<(&EntityIdIndex, &LocalPlayer, Option<&mut Physics>)>,
Query<(&EntityIdIndex, &LocalPlayer)>,
)> = SystemState::new(ecs);
let (mut commands, mut query) = system_state.get_mut(ecs);
let (entity_id_index, local_player, physics) =
query.get_mut(player_entity).unwrap();
let (entity_id_index, local_player) = query.get_mut(player_entity).unwrap();
let entity = entity_id_index.get(&MinecraftEntityId(p.entity_id));
@ -770,11 +768,10 @@ pub fn process_packet_events(ecs: &mut World) {
ClientboundGamePacket::MoveEntityPosRot(p) => {
let mut system_state: SystemState<(
Commands,
Query<(&EntityIdIndex, &LocalPlayer, Option<&mut Physics>)>,
Query<(&EntityIdIndex, &LocalPlayer)>,
)> = SystemState::new(ecs);
let (mut commands, mut query) = system_state.get_mut(ecs);
let (entity_id_index, local_player, physics) =
query.get_mut(player_entity).unwrap();
let (entity_id_index, local_player) = query.get_mut(player_entity).unwrap();
let entity = entity_id_index.get(&MinecraftEntityId(p.entity_id));

View file

@ -354,7 +354,7 @@ pub struct PlayerBundle {
/// A marker component that signifies that this entity is "local" and shouldn't
/// be updated by other clients.
#[derive(Component)]
pub struct Local;
pub struct LocalEntity;
#[derive(Component, Clone, Debug, PartialEq, Deref, DerefMut)]
pub struct FluidOnEyes(azalea_registry::Fluid);

View file

@ -13,7 +13,7 @@ use nohash_hasher::IntMap;
use std::{collections::HashMap, fmt::Debug};
use uuid::Uuid;
use crate::{EntityUuid, LastSentPosition, Local, Position};
use crate::{EntityUuid, LastSentPosition, LocalEntity, Position};
use super::LoadedBy;
@ -87,7 +87,7 @@ pub fn deduplicate_entities(
mut commands: Commands,
mut query: Query<
(Entity, &MinecraftEntityId, &InstanceName),
(Changed<MinecraftEntityId>, Without<Local>),
(Changed<MinecraftEntityId>, Without<LocalEntity>),
>,
mut loaded_by_query: Query<&mut LoadedBy>,
mut entity_id_index_query: Query<&mut EntityIdIndex>,
@ -141,7 +141,7 @@ pub fn deduplicate_local_entities(
mut commands: Commands,
mut query: Query<
(Entity, &MinecraftEntityId, &InstanceName),
(Changed<MinecraftEntityId>, With<Local>),
(Changed<MinecraftEntityId>, With<LocalEntity>),
>,
instance_container: Res<InstanceContainer>,
) {
@ -169,7 +169,7 @@ pub fn deduplicate_local_entities(
pub fn update_uuid_index(
mut entity_infos: ResMut<EntityUuidIndex>,
query: Query<(Entity, &EntityUuid, Option<&Local>), Changed<EntityUuid>>,
query: Query<(Entity, &EntityUuid, Option<&LocalEntity>), Changed<EntityUuid>>,
) {
for (entity, &uuid, local) in query.iter() {
// only add it if it doesn't already exist in
@ -189,7 +189,12 @@ pub fn update_uuid_index(
/// System to keep the entity_by_id index up-to-date.
pub fn update_entity_by_id_index(
mut query: Query<
(Entity, &MinecraftEntityId, &InstanceName, Option<&Local>),
(
Entity,
&MinecraftEntityId,
&InstanceName,
Option<&LocalEntity>,
),
Changed<MinecraftEntityId>,
>,
instance_container: Res<InstanceContainer>,

View file

@ -5,13 +5,13 @@ use std::collections::HashSet;
use azalea_core::{BlockPos, ChunkPos, Vec3};
use azalea_world::{InstanceContainer, InstanceName, MinecraftEntityId};
use bevy_app::{App, FixedUpdate, Plugin, PostUpdate, PreUpdate, Update};
use bevy_app::{App, Plugin, PostUpdate, PreUpdate, Update};
use bevy_ecs::prelude::*;
use derive_more::{Deref, DerefMut};
use log::debug;
use crate::{
metadata::Health, Dead, EyeHeight, FluidOnEyes, Local, LookDirection, Physics, Position,
metadata::Health, Dead, EyeHeight, FluidOnEyes, LocalEntity, LookDirection, Physics, Position,
};
use indexing::EntityUuidIndex;
@ -73,7 +73,7 @@ impl Plugin for EntityPlugin {
}
}
fn debug_new_entity(query: Query<(Entity, Option<&Local>), Added<MinecraftEntityId>>) {
fn debug_new_entity(query: Query<(Entity, Option<&LocalEntity>), Added<MinecraftEntityId>>) {
for (entity, local) in query.iter() {
if local.is_some() {
debug!("new local entity: {:?}", entity);

View file

@ -28,7 +28,7 @@ use derive_more::{Deref, DerefMut};
use log::warn;
use parking_lot::RwLock;
use crate::Local;
use crate::LocalEntity;
/// An [`EntityCommand`] that applies a "relative update" to an entity, which
/// means this update won't be run multiple times by different clients in the
@ -69,7 +69,7 @@ impl EntityCommand for RelativeEntityUpdate {
};
let entity_id = *entity_mut.get::<MinecraftEntityId>().unwrap();
if entity_mut.contains::<Local>() {
if entity_mut.contains::<LocalEntity>() {
// a client tried to update another client, which isn't allowed
return;
}
@ -99,12 +99,15 @@ impl EntityCommand for RelativeEntityUpdate {
}
}
/// The [`UpdatesReceived`] component should never be on [`Local`] entities.
/// This warns if an entity has both components.
/// The [`UpdatesReceived`] component should never be on [`LocalEntity`]
/// entities. This warns if an entity has both components.
pub fn debug_detect_updates_received_on_local_entities(
query: Query<Entity, (With<Local>, With<UpdatesReceived>)>,
query: Query<Entity, (With<LocalEntity>, With<UpdatesReceived>)>,
) {
for entity in &query {
warn!("Entity {:?} has both Local and UpdatesReceived", entity);
warn!(
"Entity {:?} has both LocalEntity and UpdatesReceived",
entity
);
}
}

View file

@ -7,8 +7,8 @@ pub mod collision;
use azalea_block::{Block, BlockState};
use azalea_core::{math, BlockPos, Vec3};
use azalea_entity::{
metadata::Sprinting, move_relative, Attributes, InLoadedChunk, Jumping, Local, LookDirection,
Physics, Position,
metadata::Sprinting, move_relative, Attributes, InLoadedChunk, Jumping, LocalEntity,
LookDirection, Physics, Position,
};
use azalea_world::{Instance, InstanceContainer, InstanceName};
use bevy_app::{App, FixedUpdate, Plugin};
@ -49,7 +49,7 @@ fn travel(
&Attributes,
&InstanceName,
),
(With<Local>, With<InLoadedChunk>),
(With<LocalEntity>, With<InLoadedChunk>),
>,
instance_container: Res<InstanceContainer>,
) {
@ -132,7 +132,7 @@ pub fn ai_step(
&Sprinting,
&InstanceName,
),
(With<Local>, With<InLoadedChunk>),
(With<LocalEntity>, With<InLoadedChunk>),
>,
instance_container: Res<InstanceContainer>,
) {
@ -378,7 +378,7 @@ mod tests {
ResourceLocation::new("minecraft:overworld"),
),
MinecraftEntityId(0),
Local,
LocalEntity,
))
.id();
{
@ -437,7 +437,7 @@ mod tests {
ResourceLocation::new("minecraft:overworld"),
),
MinecraftEntityId(0),
Local,
LocalEntity,
))
.id();
let block_state = partial_world.chunks.set_block_state(
@ -497,7 +497,7 @@ mod tests {
ResourceLocation::new("minecraft:overworld"),
),
MinecraftEntityId(0),
Local,
LocalEntity,
))
.id();
let block_state = partial_world.chunks.set_block_state(
@ -551,7 +551,7 @@ mod tests {
ResourceLocation::new("minecraft:overworld"),
),
MinecraftEntityId(0),
Local,
LocalEntity,
))
.id();
let block_state = world_lock.write().chunks.set_block_state(
@ -604,7 +604,7 @@ mod tests {
ResourceLocation::new("minecraft:overworld"),
),
MinecraftEntityId(0),
Local,
LocalEntity,
))
.id();
let block_state = world_lock.write().chunks.set_block_state(
@ -662,7 +662,7 @@ mod tests {
ResourceLocation::new("minecraft:overworld"),
),
MinecraftEntityId(0),
Local,
LocalEntity,
))
.id();
let block_state = world_lock.write().chunks.set_block_state(

View file

@ -3,7 +3,7 @@ use azalea::ClientBuilder;
use azalea::{Bot, LookAtEvent};
use azalea_client::Account;
use azalea_entity::metadata::{ItemItem, Player};
use azalea_entity::{EyeHeight, Local, Position};
use azalea_entity::{EyeHeight, LocalEntity, Position};
use bevy_app::{FixedUpdate, Plugin};
use bevy_ecs::{
prelude::{Entity, EventWriter},
@ -30,7 +30,7 @@ impl Plugin for LookAtStuffPlugin {
}
fn look_at_everything(
bots: Query<Entity, (With<Local>, With<Player>)>,
bots: Query<Entity, (With<LocalEntity>, With<Player>)>,
entities: EntityFinder,
entity_positions: Query<(&Position, Option<&EyeHeight>)>,
mut look_at_event: EventWriter<LookAtEvent>,

View file

@ -13,7 +13,8 @@ use azalea_client::mining::Mining;
use azalea_client::TickBroadcast;
use azalea_core::{BlockPos, Vec3};
use azalea_entity::{
clamp_look_direction, metadata::Player, EyeHeight, Jumping, Local, LookDirection, Position,
clamp_look_direction, metadata::Player, EyeHeight, Jumping, LocalEntity, LookDirection,
Position,
};
use azalea_physics::PhysicsSet;
use bevy_app::{FixedUpdate, Update};
@ -52,7 +53,7 @@ pub struct Bot {
#[allow(clippy::type_complexity)]
fn insert_bot(
mut commands: Commands,
mut query: Query<Entity, (Without<Bot>, With<Local>, With<Player>)>,
mut query: Query<Entity, (Without<Bot>, With<LocalEntity>, With<Player>)>,
) {
for entity in &mut query {
commands.entity(entity).insert(Bot::default());

View file

@ -18,14 +18,14 @@ use bevy_ecs::{
/// use azalea::chat::SendChatEvent;
/// use azalea::nearest_entity::EntityFinder;
/// use azalea_entity::metadata::{Player, AbstractMonster};
/// use azalea_entity::Local;
/// use azalea_entity::LocalEntity;
/// use bevy_ecs::system::Query;
/// use bevy_ecs::prelude::{Entity, EventWriter};
/// use bevy_ecs::query::With;
///
/// /// All bots near aggressive mobs will scream in chat.
/// pub fn bots_near_aggressive_mobs(
/// bots: Query<Entity, (With<Local>, With<Player>)>,
/// bots: Query<Entity, (With<LocalEntity>, With<Player>)>,
/// entity_finder: EntityFinder<With<AbstractMonster>>,
/// mut chat_events: EventWriter<SendChatEvent>,
/// ) {

View file

@ -20,7 +20,7 @@ use azalea_client::movement::walk_listener;
use azalea_client::{StartSprintEvent, StartWalkEvent};
use azalea_core::BlockPos;
use azalea_entity::metadata::Player;
use azalea_entity::Local;
use azalea_entity::LocalEntity;
use azalea_entity::{Physics, Position};
use azalea_physics::PhysicsSet;
use azalea_world::{InstanceContainer, InstanceName};
@ -73,7 +73,7 @@ pub struct Pathfinder {
#[allow(clippy::type_complexity)]
fn add_default_pathfinder(
mut commands: Commands,
mut query: Query<Entity, (Without<Pathfinder>, With<Local>, With<Player>)>,
mut query: Query<Entity, (Without<Pathfinder>, With<LocalEntity>, With<Player>)>,
) {
for entity in &mut query {
commands.entity(entity).insert(Pathfinder::default());

View file

@ -83,7 +83,7 @@ impl Simulation {
.spawn((
MinecraftEntityId(0),
InstanceName(instance_name),
azalea_entity::Local,
azalea_entity::LocalEntity,
azalea_entity::Jumping::default(),
azalea_entity::LookDirection::default(),
Sprinting(true),