steel_registry/
villager_type.rs1use rustc_hash::FxHashMap;
2use steel_utils::Identifier;
3
4use crate::RegistryTags;
5
6#[derive(Debug)]
7pub struct VillagerType {
8 pub key: Identifier,
9}
10
11pub type VillagerTypeRef = &'static VillagerType;
12
13pub struct VillagerTypeRegistry {
14 villager_types_by_id: Vec<VillagerTypeRef>,
15 villager_types_by_key: FxHashMap<Identifier, usize>,
16 tags: RegistryTags,
17 allows_registering: bool,
18}
19
20impl VillagerTypeRegistry {
21 #[must_use]
22 pub fn new() -> Self {
23 Self {
24 villager_types_by_id: Vec::new(),
25 villager_types_by_key: FxHashMap::default(),
26 tags: RegistryTags::default(),
27 allows_registering: true,
28 }
29 }
30}
31
32crate::impl_standard_methods!(
33 VillagerTypeRegistry,
34 VillagerTypeRef,
35 villager_types_by_id,
36 villager_types_by_key,
37 allows_registering
38);
39
40crate::impl_registry!(
41 VillagerTypeRegistry,
42 VillagerType,
43 villager_types_by_id,
44 villager_types_by_key,
45 villager_types
46);
47crate::impl_tagged_registry!(VillagerTypeRegistry, villager_types_by_key, "villager type");