#!/usr/bin/env python3 """Validate pack metadata, required assets, mappings, and archive contents.""" import json from pathlib import Path ROOT = Path(__file__).resolve().parents[1] def load(path): with path.open(encoding="utf-8") as stream: return json.load(stream) manifest = load(ROOT / "manifest.json") assert manifest["format_version"] == 2 assert manifest["header"]["uuid"] != manifest["modules"][0]["uuid"] assert manifest["modules"][0]["type"] == "resources" assert len(manifest["header"]["version"]) == 3 textures = load(ROOT / "textures/item_texture.json")["texture_data"] sound_defs = load(ROOT / "sounds/sound_definitions.json")["sound_definitions"] mappings = load(ROOT / "geyser/mappings.json") names = ("interior_shop0", "pawn_shop1", "food_mart2", "hat_shop3", "clothing_shop4", "jump_up5", "city_under_siege6") assert set(textures) == {f"friends_cmp:{name}" for name in names} assert len(sound_defs) == len(names) for entry in textures.values(): assert (ROOT / (entry["textures"] + ".png")).is_file() for entry in sound_defs.values(): assert (ROOT / (entry["sounds"][0]["name"] + ".ogg")).is_file() assert mappings["format_version"] == 2 assert len(mappings["items"]["minecraft:music_disc_13"][0]["definitions"]) == len(names) print("Bedrock pack validation passed")