#!/usr/bin/env python3 """为 themes-database.json 各主题写入 propGround(nProp)路径及 entityDisplay 默认值。""" from __future__ import annotations import json from pathlib import Path PROJECT = Path(__file__).resolve().parent.parent DB_PATH = PROJECT / "assets/resources/theme/themes-database.json" # 各主题 prop → nProp 贴图(resources 相对路径,无 .png) PROP_GROUND: dict[str, str] = { "silu": "textures/silu/nProp_kuai1", "sanxing": "textures/sanxing/nProp_kuai1", "snow": "textures/snow/nProp_kuai2", "chinese": "textures/chinese/nProp_Dumpling", "numMan": "textures/numMan/nProp_kuai", "redarmy": "textures/redArmy/nProp_star", } DEFAULT_BLOCK_Y = 14 DEFAULT_GROUND_Y = -11 DEFAULT_MOVER_EMPTY_Y = 25 def main() -> None: db = json.loads(DB_PATH.read_text(encoding="utf-8")) for theme_id, ground_path in PROP_GROUND.items(): theme = db.get("themes", {}).get(theme_id) if not theme: print(f"skip missing theme: {theme_id}") continue theme.setdefault("entities", {})["propGround"] = ground_path ed = theme.setdefault("entityDisplay", {}) prop_scale = ed.get("prop", {}).get("scale", 1) ed.setdefault("propGround", {"scale": prop_scale}) ed.setdefault("propBlockYOffset", DEFAULT_BLOCK_Y) ed.setdefault("propGroundYOffset", DEFAULT_GROUND_Y) ed.setdefault("moverEmptyCellYOffset", DEFAULT_MOVER_EMPTY_Y) png = PROJECT / "assets/resources" / f"{ground_path}.png" status = "ok" if png.is_file() else "MISSING" print(f" {theme_id}: propGround={ground_path} [{status}]") DB_PATH.write_text(json.dumps(db, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") print(f"Updated {DB_PATH}") if __name__ == "__main__": main()