aboutsummaryrefslogtreecommitdiff
path: root/codegen/lib/extract.py
diff options
context:
space:
mode:
authormat <27899617+mat-1@users.noreply.github.com>2025-12-12 00:56:02 -0600
committerGitHub <noreply@github.com>2025-12-12 00:56:02 -0600
commitf9c25665c203d6377ace62f1e95381d037d8fd9e (patch)
tree8b4131d20fe661d3cc1175ec27f801fe61df41ea /codegen/lib/extract.py
parent82ad975242292d5875780b4398b62637674bf50a (diff)
downloadazalea-drasl-f9c25665c203d6377ace62f1e95381d037d8fd9e.tar.xz
Refactor azalea-registry (#294)
* move registries in azalea-registry into separate modules * rename Item and Block to ItemKind and BlockKind * remove 'extra' registries from azalea-registry * hide deprecated items from docs * use DamageKindKey instead of Identifier when parsing registries * store tag entries as a Vec instead of a HashSet * sort tag values by protocol id * update changelog
Diffstat (limited to 'codegen/lib/extract.py')
-rw-r--r--codegen/lib/extract.py29
1 files changed, 28 insertions, 1 deletions
diff --git a/codegen/lib/extract.py b/codegen/lib/extract.py
index b575b697..b07e17ba 100644
--- a/codegen/lib/extract.py
+++ b/codegen/lib/extract.py
@@ -34,7 +34,7 @@ def get_block_states_report(version_id: str):
return get_report(version_id, "blocks")
-def get_registries_report(version_id: str):
+def get_builtin_registries_report(version_id: str):
return get_report(version_id, "registries")
@@ -73,6 +73,33 @@ def get_registry_tags(version_id: str, name: str):
return tags
+# note that these are different from "builtin" registries
+def get_data_registries(version_id: str):
+ generate_data_from_server_jar(version_id)
+ data_registries_dir = get_dir_location(
+ f"__cache__/generated-{version_id}/data/minecraft"
+ )
+ registries = {}
+
+ def add_entries_in_dir(parent_dir, registry_name):
+ entries = []
+ for variant_dir in os.listdir(os.path.join(parent_dir, registry_name)):
+ if not variant_dir.endswith(".json"):
+ continue
+ entries.append(variant_dir[:-5])
+ if len(entries) > 0:
+ registries[registry_name] = entries
+
+ for registry_name in os.listdir(data_registries_dir):
+ add_entries_in_dir(data_registries_dir, registry_name)
+ for registry_name in os.listdir(os.path.join(data_registries_dir, "worldgen")):
+ if registry_name != "biome":
+ continue
+ add_entries_in_dir(data_registries_dir, os.path.join("worldgen", registry_name))
+
+ return registries
+
+
python_command = None