From b8228a036016fa58cab4b00a2e62298df299d41f Mon Sep 17 00:00:00 2001 From: mat <27899617+mat-1@users.noreply.github.com> Date: Sat, 27 Aug 2022 20:31:21 -0500 Subject: Azalea registry (#20) * make azalea-registry crate * add trait feature to az-block * registr * registry macro * impl Display for registry things * registries --- codegen/lib/code/registry.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 codegen/lib/code/registry.py (limited to 'codegen/lib/code/registry.py') diff --git a/codegen/lib/code/registry.py b/codegen/lib/code/registry.py new file mode 100644 index 00000000..fbe9e5af --- /dev/null +++ b/codegen/lib/code/registry.py @@ -0,0 +1,32 @@ +from typing import Optional +from lib.utils import to_snake_case, upper_first_letter, get_dir_location, to_camel_case +from ..mappings import Mappings +import re + +REGISTRIES_DIR = get_dir_location('../azalea-registry/src/lib.rs') + + +def generate_registries(registries: dict): + code = [] + + code.append('use registry_macros::registry;') + code.append('') + + for registry_name, registry in registries.items(): + # registry!(Block, { + # Air => "minecraft:air", + # Stone => "minecraft:stone" + # }); + registry_struct_name = to_camel_case(registry_name.split(':')[1]) + code.append(f'registry!({registry_struct_name}, {{') + registry_entries = sorted( + registry['entries'].items(), key=lambda x: x[1]['protocol_id']) + for variant_name, _variant in registry_entries: + variant_struct_name = to_camel_case( + variant_name.split(':')[1]) + code.append(f'\t{variant_struct_name} => "{variant_name}",') + code.append('});') + code.append('') + + with open(REGISTRIES_DIR, 'w') as f: + f.write('\n'.join(code)) -- cgit v1.2.3