rust-bevy-standardslisted
Install: claude install-skill kimgoetzke/coding-agent-configs
⚠️ Bevy 0.17+ Breaking Changes
- Material handles wrapped in `MeshMaterial3d<T>`, not `Handle<T>`
- Observer pattern replaces event system (`commands.trigger()`, `add_observer()`)
- `Event` split into `Message` (buffered) and `Event` (observers)
- `EventWriter`/`EventReader` replaced by `MessageWriter`/`MessageReader` (`message.write()` / `messages.read()`)
- Observer trigger API changed:
```rust
// Old
commands.add_observer(|trigger: Trigger<OnAdd, Player>| {
info!("Spawned player {}", trigger.target());
});
// New
commands.add_observer(|add: On<Add, Player>| {
info!("Spawned player {}", add.entity);
});
```
- Color arithmetic removed; use component extraction instead
⚠️ Bevy 0.18+ Breaking Changes
- `RenderTarget` is now a required component on `Camera`, not a `Camera` field:
```rust
// Old
Camera { target: RenderTarget::Image(handle.into()), ..default() }
// New
commands.spawn((Camera3d::default(), RenderTarget::Image(handle.into())));
```
- `BorderRadius` is now a field on `Node`, not a component
- `LineHeight` is now a required component on `Text`/`Text2d`/`TextSpan`; removed from `TextFont`
- `AmbientLight` resource renamed to `GlobalAmbientLight`; `AmbientLight` is now a component on `Camera`
- `clear_children` → `detach_all_children`, `remove_children` → `detach_children`, `remove_child` → `detach_child` (same on `EntityCommands` and `EntityWorldMut`)
- `AnimationTarget { id, player }` replaced by separate `AnimationTarget