@@ -4,7 +4,7 @@ use crate::entity::entity_metadata::{EntityMetadata, PlayerMetadata};
44use crate :: network:: binary:: var_int:: VarInt ;
55use crate :: network:: packets:: packet_buffer:: PacketBuffer ;
66use crate :: network:: protocol:: play:: clientbound:: { DestroyEntites , EntityRotate , EntityTeleport , EntityYawRotate , PlayerData , PlayerListItem , SpawnMob , SpawnPlayer } ;
7- use crate :: { GameProfile , GameProfileProperty , Player , WorldExtension } ;
7+ use crate :: { GameProfile , GameProfileProperty , Player , World , WorldExtension } ;
88use bevy_ecs:: component:: Mutable ;
99use bevy_ecs:: prelude:: Component ;
1010use fstr:: FString ;
@@ -13,6 +13,8 @@ use uuid::Uuid;
1313
1414pub trait EntityAppearance < W : WorldExtension + ' static > : Component < Mutability = Mutable > + Sized {
1515
16+ fn init ( & self , _world : & mut World < W > ) { }
17+
1618 fn enter_player_view ( & self , entity : & MinecraftEntity < W > , player : & mut Player < W :: Player > ) ;
1719
1820 fn leave_player_view ( & self , entity : & MinecraftEntity < W > , player : & mut Player < W :: Player > ) ;
@@ -162,4 +164,17 @@ fn update_position<W : WorldExtension>(entity: &MinecraftEntity<W>, buffer: &mut
162164 entity_id : entity. id ,
163165 yaw : entity. yaw ,
164166 } ) ;
167+ }
168+
169+ #[ derive( Component ) ]
170+ pub struct NoAppearance ;
171+
172+ impl < W : WorldExtension + ' static > EntityAppearance < W > for NoAppearance {
173+ fn enter_player_view ( & self , _: & MinecraftEntity < W > , _: & mut Player < W :: Player > ) { }
174+
175+ fn leave_player_view ( & self , _: & MinecraftEntity < W > , _: & mut Player < W :: Player > ) { }
176+
177+ fn update_position ( & self , _: & MinecraftEntity < W > , _: & mut PacketBuffer ) { }
178+
179+ fn destroy ( & self , _: & MinecraftEntity < W > , _: & mut DestroyEntites ) { }
165180}
0 commit comments