1#.\n\n---\n"
4)]
5#![doc = include_str!("../README.md")]
6#![doc(
7 html_logo_url = "https://raw.githubusercontent.com/valence-rs/valence/main/assets/logo.svg",
8 html_favicon_url = "https://raw.githubusercontent.com/valence-rs/valence/main/assets/logo.svg"
9)]
10#![deny(
11 rustdoc::broken_intra_doc_links,
12 rustdoc::private_intra_doc_links,
13 rustdoc::missing_crate_level_docs,
14 rustdoc::invalid_codeblock_attributes,
15 rustdoc::invalid_rust_codeblocks,
16 rustdoc::bare_urls,
17 rustdoc::invalid_html_tags
18)]
19#![warn(
20 trivial_casts,
21 trivial_numeric_casts,
22 unused_lifetimes,
23 unused_import_braces,
24 unreachable_pub,
25 clippy::dbg_macro
26)]
27
28use bevy_app::{PluginGroup, PluginGroupBuilder};
29
30#[cfg(feature = "testing")]
31pub mod testing;
32
33#[cfg(test)]
34mod tests;
35
36#[cfg(feature = "log")]
37pub use bevy_log as log;
38use registry::biome::BiomePlugin;
39use registry::dimension_type::DimensionTypePlugin;
40#[cfg(feature = "advancement")]
41pub use valence_advancement as advancement;
42#[cfg(feature = "anvil")]
43pub use valence_anvil as anvil;
44#[cfg(feature = "boss_bar")]
45pub use valence_boss_bar as boss_bar;
46#[cfg(feature = "command")]
47pub use valence_command as command;
48#[cfg(feature = "command")]
49pub use valence_command_macros as command_macros;
50#[cfg(feature = "equipment")]
51pub use valence_equipment as equipment;
52#[cfg(feature = "inventory")]
53pub use valence_inventory as inventory;
54pub use valence_lang as lang;
55#[cfg(feature = "network")]
56pub use valence_network as network;
57#[cfg(feature = "player_list")]
58pub use valence_player_list as player_list;
59use valence_registry::RegistryPlugin;
60#[cfg(feature = "scoreboard")]
61pub use valence_scoreboard as scoreboard;
62use valence_server::abilities::AbilitiesPlugin;
63use valence_server::action::ActionPlugin;
64use valence_server::client::ClientPlugin;
65use valence_server::client_command::ClientCommandPlugin;
66use valence_server::client_settings::ClientSettingsPlugin;
67use valence_server::custom_payload::CustomPayloadPlugin;
68use valence_server::entity::hitbox::HitboxPlugin;
69use valence_server::entity::EntityPlugin;
70use valence_server::event_loop::EventLoopPlugin;
71use valence_server::hand_swing::HandSwingPlugin;
72use valence_server::interact_block::InteractBlockPlugin;
73use valence_server::interact_entity::InteractEntityPlugin;
74use valence_server::interact_item::InteractItemPlugin;
75use valence_server::keepalive::KeepalivePlugin;
76use valence_server::layer::LayerPlugin;
77use valence_server::message::MessagePlugin;
78use valence_server::movement::MovementPlugin;
79use valence_server::op_level::OpLevelPlugin;
80pub use valence_server::protocol::status_effects;
81use valence_server::resource_pack::ResourcePackPlugin;
82use valence_server::status::StatusPlugin;
83use valence_server::status_effect::StatusEffectPlugin;
84use valence_server::teleport::TeleportPlugin;
85pub use valence_server::*;
86#[cfg(feature = "weather")]
87pub use valence_weather as weather;
88#[cfg(feature = "world_border")]
89pub use valence_world_border as world_border;
90
91pub mod prelude {
104 pub use bevy_app::prelude::*;
105 pub use bevy_ecs; pub use bevy_ecs::prelude::*;
107 pub use uuid::Uuid;
108 #[cfg(feature = "advancement")]
109 pub use valence_advancement::{
110 event::AdvancementTabChangeEvent, Advancement, AdvancementBundle, AdvancementClientUpdate,
111 AdvancementCriteria, AdvancementDisplay, AdvancementFrameType, AdvancementRequirements,
112 };
113 #[cfg(feature = "equipment")]
114 pub use valence_equipment::Equipment;
115 #[cfg(feature = "inventory")]
116 pub use valence_inventory::{
117 CursorItem, Inventory, InventoryKind, InventoryWindow, InventoryWindowMut, OpenInventory,
118 };
119 #[cfg(feature = "network")]
120 pub use valence_network::{
121 ConnectionMode, ErasedNetworkCallbacks, NetworkCallbacks, NetworkSettings, NewClientInfo,
122 SharedNetworkState,
123 };
124 #[cfg(feature = "player_list")]
125 pub use valence_player_list::{PlayerList, PlayerListEntry};
126 pub use valence_registry::biome::{Biome, BiomeId, BiomeRegistry};
127 pub use valence_registry::dimension_type::{DimensionType, DimensionTypeRegistry};
128 pub use valence_server::action::{DiggingEvent, DiggingState};
129 pub use valence_server::block::{BlockKind, BlockState, PropName, PropValue};
130 pub use valence_server::client::{
131 despawn_disconnected_clients, Client, Ip, OldView, OldViewDistance, Properties, Username,
132 View, ViewDistance, VisibleChunkLayer, VisibleEntityLayers,
133 };
134 pub use valence_server::client_command::{
135 ClientCommand, JumpWithHorseEvent, JumpWithHorseState, LeaveBedEvent, SneakEvent,
136 SneakState, SprintEvent, SprintState,
137 };
138 pub use valence_server::entity::hitbox::{Hitbox, HitboxShape};
139 pub use valence_server::entity::{
140 EntityAnimation, EntityKind, EntityLayerId, EntityManager, EntityStatus, HeadYaw, Look,
141 OldEntityLayerId, OldPosition, Position,
142 };
143 pub use valence_server::event_loop::{
144 EventLoopPostUpdate, EventLoopPreUpdate, EventLoopUpdate,
145 };
146 pub use valence_server::ident::Ident;
147 pub use valence_server::interact_entity::{EntityInteraction, InteractEntityEvent};
148 pub use valence_server::layer::chunk::{
149 Block, BlockRef, Chunk, ChunkLayer, LoadedChunk, UnloadedChunk,
150 };
151 pub use valence_server::layer::{EntityLayer, LayerBundle};
152 pub use valence_server::math::{DVec2, DVec3, Vec2, Vec3};
153 pub use valence_server::message::SendMessage as _;
154 pub use valence_server::nbt::Compound;
155 pub use valence_server::protocol::packets::play::particle_s2c::Particle;
156 pub use valence_server::protocol::text::{Color, IntoText, Text};
157 pub use valence_server::spawn::{ClientSpawnQuery, ClientSpawnQueryReadOnly, RespawnPosition};
158 pub use valence_server::title::SetTitle as _;
159 pub use valence_server::{
160 ident, BlockPos, ChunkPos, ChunkView, Despawned, Direction, GameMode, Hand, ItemKind,
161 ItemStack, Server, UniqueId,
162 };
163
164 pub use super::DefaultPlugins;
165}
166
167pub struct DefaultPlugins;
174
175impl PluginGroup for DefaultPlugins {
176 fn build(self) -> PluginGroupBuilder {
177 #[allow(unused_mut)]
178 let mut group = PluginGroupBuilder::start::<Self>()
179 .add(ServerPlugin)
180 .add(RegistryPlugin)
181 .add(BiomePlugin)
182 .add(DimensionTypePlugin)
183 .add(EntityPlugin)
184 .add(HitboxPlugin)
185 .add(LayerPlugin)
186 .add(ClientPlugin)
187 .add(EventLoopPlugin)
188 .add(MovementPlugin)
189 .add(ClientCommandPlugin)
190 .add(KeepalivePlugin)
191 .add(InteractEntityPlugin)
192 .add(ClientSettingsPlugin)
193 .add(ActionPlugin)
194 .add(TeleportPlugin)
195 .add(MessagePlugin)
196 .add(CustomPayloadPlugin)
197 .add(HandSwingPlugin)
198 .add(InteractBlockPlugin)
199 .add(InteractItemPlugin)
200 .add(OpLevelPlugin)
201 .add(ResourcePackPlugin)
202 .add(StatusPlugin)
203 .add(StatusEffectPlugin)
204 .add(AbilitiesPlugin);
205
206 #[cfg(feature = "log")]
207 {
208 group = group.add(bevy_log::LogPlugin::default())
209 }
210
211 #[cfg(feature = "network")]
212 {
213 group = group.add(valence_network::NetworkPlugin)
214 }
215
216 #[cfg(feature = "player_list")]
217 {
218 group = group.add(valence_player_list::PlayerListPlugin)
219 }
220
221 #[cfg(feature = "equipment")]
222 {
223 group = group.add(valence_equipment::EquipmentPlugin)
224 }
225
226 #[cfg(feature = "inventory")]
227 {
228 group = group.add(valence_inventory::InventoryPlugin)
229 }
230
231 #[cfg(feature = "anvil")]
232 {
233 group = group.add(valence_anvil::AnvilPlugin)
234 }
235
236 #[cfg(feature = "advancement")]
237 {
238 group = group.add(valence_advancement::AdvancementPlugin)
239 }
240
241 #[cfg(feature = "weather")]
242 {
243 group = group.add(valence_weather::WeatherPlugin)
244 }
245
246 #[cfg(feature = "world_border")]
247 {
248 group = group.add(valence_world_border::WorldBorderPlugin)
249 }
250
251 #[cfg(feature = "boss_bar")]
252 {
253 group = group.add(valence_boss_bar::BossBarPlugin)
254 }
255
256 #[cfg(feature = "command")]
257 {
258 group = group.add(valence_command::manager::CommandPlugin)
259 }
260
261 #[cfg(feature = "scoreboard")]
262 {
263 group = group.add(valence_scoreboard::ScoreboardPlugin)
264 }
265
266 group
267 }
268}