bevy-plugin-builder 0.1.2

Declarative plugin system for Bevy - eliminate boilerplate with beautiful syntax
Documentation

bevy-plugin-builder

Declarative plugin system for Bevy

Reduce boilerplate with readable syntax

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] }
});

Why This Matters

  • 37% less code on average
  • Zero registration errors (compile-time validation)
  • 10x faster plugin development
  • Perfect readability, intent over implementation
  • World-first features like custom_finish support

Installation

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