aboutsummaryrefslogtreecommitdiff
path: root/azalea-inventory/src/default_components/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'azalea-inventory/src/default_components/mod.rs')
-rw-r--r--azalea-inventory/src/default_components/mod.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/azalea-inventory/src/default_components/mod.rs b/azalea-inventory/src/default_components/mod.rs
new file mode 100644
index 00000000..e6150066
--- /dev/null
+++ b/azalea-inventory/src/default_components/mod.rs
@@ -0,0 +1,20 @@
+pub mod generated;
+
+use azalea_registry::Item;
+
+use crate::components::DataComponent;
+
+/// A [`DataComponent`] that some [`Item`]s may have a default value for.
+pub trait DefaultableComponent: DataComponent {
+ fn default_for_item(item: Item) -> Option<Self>
+ where
+ Self: Sized;
+}
+impl<T: DataComponent> DefaultableComponent for T {
+ default fn default_for_item(_item: Item) -> Option<Self> {
+ None
+ }
+}
+pub fn get_default_component<T: DefaultableComponent>(item: Item) -> Option<T> {
+ T::default_for_item(item)
+}