bevy-plugin-builder 0.1.3

Declarative plugin system for Bevy
Documentation

bevy-plugin-builder

Declarative plugin system for Bevy

Crates.io Documentation License Bevy tracking

Before & After

Before (Traditional Bevy Plugin)

pub struct GamePlugin;

impl Plugin for GamePlugin {
    fn build(&self, app: &mut App) {
        app.init_resource::<GameSettings>()
           .init_resource::<PlayerStats>()
           .add_event::<PlayerLevelUp>()
           .add_event::<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],
    events: [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] }
});

Installation

[dependencies] bevy-plugin-builder = "0.1" bevy = "0.16"