#bevy #gamedev #bevy-butler #macro #system #resources

bevy-butler

A crate for making Bevy systems more self-documenting

32 releases (5 breaking)

new 0.6.1 May 1, 2025
0.6.1-alpha.1 Mar 28, 2025
0.6.0-alpha.2 May 1, 2025
0.5.7 Mar 20, 2025

#561 in Game dev

Download history 211/week @ 2025-01-02 477/week @ 2025-01-09 205/week @ 2025-01-16 701/week @ 2025-01-23 679/week @ 2025-01-30 352/week @ 2025-02-06 143/week @ 2025-02-13 9/week @ 2025-02-20 30/week @ 2025-02-27 266/week @ 2025-03-20 134/week @ 2025-03-27 7/week @ 2025-04-03 3/week @ 2025-04-10 7/week @ 2025-04-17

152 downloads per month

MIT/Apache

38KB
382 lines

bevy-butler

A set of procedural macros for making Bevy plugins and systems more self-documenting.

Crates.io License Crates.io Version docs.rs Crates.io MSRV

Version Compatibility

bevy bevy-butler
0.16 0.6
0.15 0.5

Example

use bevy::prelude::*;
use bevy_butler::*;
use bevy_log::prelude::*;

#[butler_plugin]
pub struct MyPlugin;

#[derive(Resource)]
#[add_resource(plugin = MyPlugin, init = Hello("World".to_string()))]
pub struct Hello(pub String);

#[add_system(schedule = Update, plugin = MyPlugin)]
fn hello_plugin(name: Res<Hello>)
{
    info!("Hello, {}!", name.0);
}

#[add_system(schedule = Update, plugin = MyPlugin, after = hello_plugin)]
fn goodbye_plugin(name: Res<Hello>)
{
    info!("Goodbye, {}!", name.0);
}

fn main() {
    App::new()
        .add_plugins(MyPlugin)
        .run();
}

WebAssembly support

WebAssembly support is currently locked behind the wasm-experimental flag. See the relevant issue for more information.

Dependencies

~15–25MB
~364K SLoC