"""Волна N+39: vfbuild60 — 18 EF в tr.java (submitDroplets + submitSplashes). Запуск: python3 tools/waves_n39.py""" import os, sys ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) p = os.path.join(ROOT, "src/main/java/defpackage/tr.java") L = open(p, encoding="utf-8", errors="replace").read().splitlines() ok = True def edit(ln, old, new): global ok i = ln - 1 if i < len(L) and old in L[i]: L[i] = L[i].replace(old, new, 1) elif i < len(L) and new in L[i]: pass else: ok = False print(f"MISS {ln}: {old!r} got {(L[i] if i < len(L) else '').strip()!r}") def insert_before(ln, anchor_prev, anchor_next, decls): global ok ip = ln - 1 prev_ok = anchor_prev in L[ip - 1] next_ok = anchor_next in L[ip] done = decls[0].strip() in "\n".join(L[max(0, ip - 8) : ip + 12]) if prev_ok and next_ok and not done: line = L[ip] indent = line[: len(line) - len(line.lstrip())] L[ip:ip] = [indent + d for d in decls] elif done: pass else: ok = False print( f"INSERT-MISS {ln}: prev={L[ip - 1].strip()[:60]!r} next={L[ip].strip()[:60]!r}" ) # edits first (descending): region2 (submitSplashes) then region1 (submitDroplets) edit(1601, "var11x < var10", "var11x < var10f") edit(1596, "var8 * (1.0F", "var8f * (1.0F") edit(1582, "var6 - this.splashStart", "var6f - this.splashStart") edit(1581, "(var11 + var11x)", "(var11f + var11x)") edit( 1574, "var14x * var9.x() + var16x * var9.y() + var18 * var9.z()", "var14x * var9f.x() + var16x * var9f.y() + var18 * var9f.z()", ) edit( 1452, "var18x * var12 + var19x * var13 + var20x * var14", "var18x * var12f + var19x * var13f + var20x * var14f", ) edit(1400, "-var6 / var13x", "-var6f / var13x") edit(1398, "var6 * var6", "var6f * var6f") edit(1387, "var17x < var15", "var17x < var15f") edit(1369, "var29 = var10 * var22x", "var29 = var10f * var22x") edit(1368, "var28 = var8 * this.dropSpeed", "var28 = var8f * this.dropSpeed") edit(1367, "Math.max(var9,", "Math.max(var9f,") # inserts (descending) insert_before( 1524, "var11 = this.splashHead;", "var1.submitCustomGeometry(var2, arj.positionColorDepthNoWrite(), (var9x, var10x) -> {", [ "final long var6f = var6;", "final float var8f = var8;", "final Vector3fc var9f = var9;", "final int var10f = var10;", "final int var11f = var11;", ], ) insert_before( 1329, "var15 = this.dropCount;", "var1.submitCustomGeometry(var2, arj.positionColorDepthNoWrite(), (var11x, var12x) -> {", [ "final float var6f = var6;", "final float var8f = var8;", "final float var9f = var9;", "final float var10f = var10;", "final float var12f = var12;", "final float var13f = var13;", "final float var14f = var14;", "final int var15f = var15;", ], ) open(p, "w", encoding="utf-8").write("\n".join(L) + "\n") print("OK" if ok else "PROBLEMS") sys.exit(0 if ok else 1)