bevy-plugin-builder

Crates.iobevy-plugin-builder
lib.rsbevy-plugin-builder
version0.1.5
created_at2025-09-18 16:39:04.683952+00
updated_at2025-09-24 19:31:10.087781+00
descriptionDeclarative plugin system for Bevy
homepagehttps://github.com/noahsabaj/bevy-plugin-builder
repositoryhttps://github.com/noahsabaj/bevy-plugin-builder
max_upload_size
id1844990
size194,872
Noah Sabaj (noahsabaj)

documentation

https://docs.rs/bevy-plugin-builder

README

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"

Commit count: 31

cargo fmt