From 066a1d1238c045c9a4ecc2850cf1757894bef63d Mon Sep 17 00:00:00 2001 From: BruceChen Date: Sat, 21 Mar 2026 01:15:39 +0800 Subject: [PATCH] Remove unused script --- scripts/gen_palette_1214.py | 112 ------------------------------------ 1 file changed, 112 deletions(-) delete mode 100644 scripts/gen_palette_1214.py diff --git a/scripts/gen_palette_1214.py b/scripts/gen_palette_1214.py deleted file mode 100644 index cf3ce31c..00000000 --- a/scripts/gen_palette_1214.py +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env python3 -""" -Generate Palette1214.cs from vanilla reports/blocks.json (1.21.4). - -Obtain blocks.json: - java -DbundlerMainClass=net.minecraft.data.Main -jar server.jar --reports --output - -> /reports/blocks.json - -Default input: /tmp/mc1214_reports/reports/blocks.json (run this script after generating reports). -""" -from __future__ import annotations - -import json -import re -import sys -from collections import defaultdict -from pathlib import Path - -ROOT = Path("/home/ryan/Minecraft/Minecraft-Console-Client-milutinke") -DEFAULT_JSON = Path("/tmp/mc1214_reports/reports/blocks.json") -OUT = ROOT / "MinecraftClient/Mapping/BlockPalettes/Palette1214.cs" - - -def snake_to_material_pascal(snake: str) -> str: - return "".join(part.capitalize() for part in snake.split("_")) - - -def merge_ranges(sorted_ids: list[int]) -> list[tuple[int, int]]: - if not sorted_ids: - return [] - ids = sorted(sorted_ids) - out: list[tuple[int, int]] = [] - s = e = ids[0] - for x in ids[1:]: - if x == e + 1: - e = x - else: - out.append((s, e)) - s = e = x - out.append((s, e)) - return out - - -def emit_palette(assignments: list[tuple[str, list[tuple[int, int]]]]) -> str: - lines = [ - "using System.Collections.Generic;", - "", - "namespace MinecraftClient.Mapping.BlockPalettes", - "{", - " public class Palette1214 : BlockPalette", - " {", - " private static readonly Dictionary materials = new();", - "", - " static Palette1214()", - " {", - ] - for mat, ranges in sorted(assignments, key=lambda x: x[0]): - for start, end in ranges: - if start == end: - lines.append(f" materials[{start}] = Material.{mat};") - else: - lines.append(f" for (int i = {start}; i <= {end}; i++)") - lines.append(f" materials[i] = Material.{mat};") - lines.extend( - [ - " }", - "", - " protected override Dictionary GetDict()", - " {", - " return materials;", - " }", - " }", - "}", - ] - ) - return "\n".join(lines) + "\n" - - -def main() -> None: - json_path = Path(sys.argv[1]) if len(sys.argv) > 1 else DEFAULT_JSON - if not json_path.is_file(): - raise SystemExit(f"Missing {json_path} — generate with server.jar --reports") - - data = json.loads(json_path.read_text(encoding="utf-8")) - ids_by_material: dict[str, list[int]] = defaultdict(list) - known: set[int] = set() - max_id = -1 - - for key, val in data.items(): - if not key.startswith("minecraft:"): - raise SystemExit(f"Unexpected block key: {key}") - name = key.split(":", 1)[1] - mat = snake_to_material_pascal(name) - for st in val["states"]: - sid = int(st["id"]) - if sid in known: - raise SystemExit(f"Duplicate state id {sid}") - known.add(sid) - max_id = max(max_id, sid) - ids_by_material[mat].append(sid) - - expected = max_id + 1 - if len(known) != expected: - raise SystemExit(f"Non-contiguous state IDs: have {len(known)}, expected 0..{max_id}") - - assignments = [(m, merge_ranges(ids)) for m, ids in ids_by_material.items()] - OUT.write_text(emit_palette(assignments), encoding="utf-8") - print(f"Wrote {OUT} ({expected} states, {len(data)} block types)") - - -if __name__ == "__main__": - main()