| Crates.io | bevy-plugin-builder |
| lib.rs | bevy-plugin-builder |
| version | 0.2.0 |
| created_at | 2025-09-18 16:39:04.683952+00 |
| updated_at | 2025-10-25 04:45:28.584307+00 |
| description | Declarative plugin system for Bevy |
| homepage | https://github.com/noahsabaj/bevy-plugin-builder |
| repository | https://github.com/noahsabaj/bevy-plugin-builder |
| max_upload_size | |
| id | 1844990 |
| size | 207,243 |
Declarative plugin system for Bevy
pub struct GamePlugin;
impl Plugin for GamePlugin {
fn build(&self, app: &mut App) {
app.init_resource::<GameSettings>()
.init_resource::<PlayerStats>()
.add_message::<PlayerLevelUp>()
.add_message::<GameOver>()
.add_systems(Startup, initialize_game)
.add_systems(Update, (
handle_input,
update_player,
check_collisions
).chain().run_if(in_state(GameState::Playing)))
.add_systems(OnEnter(GameState::GameOver), cleanup_game);
}
}
After (bevy-plugin-builder)
use bevy_plugin_builder::define_plugin;
define_plugin!(GamePlugin {
resources: [GameSettings, PlayerStats],
messages: [PlayerLevelUp, GameOver],
startup: [initialize_game],
update: [
(handle_input, update_player, check_collisions)
.chain().run_if(in_state(GameState::Playing))
],
on_enter: { GameState::GameOver => [cleanup_game] }
});
[dependencies] bevy-plugin-builder = "0.2" bevy = "0.17"