#!/usr/bin/env python3 """Write data-pack overrides that stop Cobblemon's evolution-stone ores from generating. Cobblemon adds its ore features from code as direct holders, so the `neoforge:remove_features` modifier (which matches registry holders) cannot remove them. Cobblemon looks each placed feature up by id, though, so an override with zero placements under the same id turns it off. Re-run this after a Cobblemon update and commit the result. Usage: tools/cobblemon_ore_overrides.py """ import json import shutil import sys import zipfile from pathlib import Path ROOT = Path(__file__).resolve().parent.parent PREFIX = "data/cobblemon/worldgen/placed_feature/ore/" OUT = ROOT / "datapacks/core" / PREFIX def main(): if len(sys.argv) != 2: sys.exit(__doc__) jar = zipfile.ZipFile(sys.argv[1]) shutil.rmtree(OUT, ignore_errors=True) OUT.mkdir(parents=True) names = sorted(n for n in jar.namelist() if n.startswith(PREFIX) and n.endswith(".json")) for name in names: original = json.loads(jar.read(name)) override = {"feature": original["feature"], "placement": [{"type": "minecraft:count", "count": 0}]} (OUT / name[len(PREFIX):]).write_text(json.dumps(override, indent=2) + "\n") print(f"wrote {len(names)} overrides to {OUT.relative_to(ROOT)}") if __name__ == "__main__": main()