Skip to content

fix: overlay consistency + 4 bugs (validate patch, version_warn, build 26_2)#89

Merged
asn44nb merged 2 commits into
mainfrom
fix/overlay-consistency-bugs
Jun 15, 2026
Merged

fix: overlay consistency + 4 bugs (validate patch, version_warn, build 26_2)#89
asn44nb merged 2 commits into
mainfrom
fix/overlay-consistency-bugs

Conversation

@asn44nb

@asn44nb asn44nb commented Jun 15, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fixes 4 confirmed bugs across overlays + a workflow omission. All changes are in overlay-specific files; base layer is untouched.


Bug 1 — 1_20_3/validate: wrong patch version check

File: 1_20_3/data/dl_load/functions/load/internal/validate.mcfunction
The patch score was checked against 1 instead of 2 (v5.1.2). Any server that had previously loaded 5.1.1 and then updated would pass the validate guard incorrectly, loading over a mismatched version without erroring. Fixed to matches 2.

Bug 2 — 1_20_5/validate: same wrong patch check

File: 1_20_5/data/dl_load/functions/core/internal/load/validate.mcfunction
Identical issue. Fixed.

Bug 3 — 1_20_3/version_warn: stale expected version + truncated hoverEvent

File: 1_20_3/data/dl_load/functions/load/internal/version_warn.mcfunction

  • Debug tellraw showed (expected: 4 0 4 pre=0) — stale from v4.0.4. Fixed to 5 1 2 pre=0.
  • hoverEvent.value was "Reload Dat" (truncated). Fixed to "Reload DataLib".

Bug 4 — 1_20_5/version_warn: copy-paste from macroEngine

File: 1_20_5/data/dl_load/functions/core/internal/load/version_warn.mcfunction

  • "to reinitialize AME."AME is macroEngine's identifier. Fixed to "dataLib".
  • Same truncated "Reload Dat" hover. Fixed.
  • Same stale expected version (4 0 4 pre=0). Fixed to 5 1 2 pre=0.

Overlay consistency — 1_21_5 and 26_2 version_warn

Both overlays carried stale (expected: 4 0 2 pre=0). Fixed to 5 1 2 pre=0 in both.

Workflow — build.yml: 26_2 missing from OVERLAY lists

  • OVERLAY_DIRS (rsync exclusions) did not include 26_2 → its files were leaked into the base layer of all targeted builds.
  • ALL_OVERLAYS (full build copy list) did not include 26_2 → the full build omitted the 26_2 overlay directory entirely.
  • Added 26_2 to both lists.

github-actions Bot added 2 commits June 15, 2026 09:23
…d 26_2)

Bug 1 — 1_20_3/validate: patch version check was 'matches 1' instead of 'matches 2' (v5.1.2)
  → false mismatch on any server that previously ran 5.1.1 and reloaded after 5.1.2 update

Bug 2 — 1_20_5/validate: same wrong patch check ('matches 1' → 'matches 2')

Bug 3 — 1_20_3/version_warn: debug line showed '(expected: 4 0 4 pre=0)' (stale v4.0.4)
  → fixed to '(expected: 5 1 2 pre=0)'; also fixed truncated hoverEvent value 'Reload Dat' → 'Reload DataLib'

Bug 4 — 1_20_5/version_warn: 'to reinitialize AME.' (copy-paste from macroEngine)
  → fixed to 'dataLib'; same truncated hover + stale expected version fixed

Overlay consistency — 1_21_5 and 26_2 version_warn also carried stale '(expected: 4 0 2 pre=0)'
  → fixed to '(expected: 5 1 2 pre=0)' in both overlays

Workflow — build.yml: 26_2 was missing from OVERLAY_DIRS and ALL_OVERLAYS
  → base-layer rsync did NOT exclude 26_2 (its files leaked into all targeted builds)
  → full build did NOT copy 26_2 overlay directory at all
  → added 26_2 to both lists
Bug 1 — color/from_score: hardcoded # prefix breaks real player targeting
  Macro lines used `#$(player)` which always makes it a fake player score
  target. A caller passing player="Steve" would check score of "#Steve".
  Removed the hardcoded #; callers include # themselves for fake players.
  Updated docstring accordingly.

Bug 2 — color/validate_exec: invalid macro key in inline NBT compound
  `$execute if data ... color._names{$(color):1b}` is invalid — macro
  substitution cannot be used as a key inside a `{key:value}` literal.
  Fixed to use NBT path syntax: `color._names.$(color)` which IS valid
  macro substitution in a path argument position.

Bug 3 — color/resolve: wrong `with storage` target loses $(color) arg
  Called `resolve_exec with storage datalib:engine color` which passes the
  color compound {palette:{...}, gradients:{...}} as macro source.
  resolve_exec looks for key `color` in that compound — it doesn't exist,
  so $(color) is undefined and the function call aborts silently.
  Fix: write $(color) into a temp compound first, then call resolve_exec
  with that temp so the key is present and correct.

Bug 4 — gamerule/set,get,reset: check_all guard always blocks
  All three functions used `check_all` as their execution guard.
  check_all includes input_check (the full 25-section validation pipeline)
  which at Section 4 requires `datalib:input.func` to be set.
  The gamerule API doesn't use the func-dispatch system, so func is never
  set → input_check always returns 0 → check_all returns 0 → the gamerule
  functions are completely non-functional (always blocked).
  Fixed by replacing check_all with cmd_gate in all three functions.
  cmd_gate only checks engine load state and permission level — correct for
  direct API calls that don't go through the dispatch engine.
@asn44nb asn44nb merged commit e5bcea1 into main Jun 15, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant