Skip to content

feat(gametest): give the sculk catalyst its spreader and bind SculkSpreader - #385

Merged
NaySurGithub merged 2 commits into
devfrom
feat/gametest-sculk-spreader
Nov 13, 2026
Merged

NaySurGithub merged 2 commits into
devfrom
feat/gametest-sculk-spreader

Conversation

@NaySurGithub

Copy link
Copy Markdown
Contributor

What

  • SculkCatalystBlock and its SculkCatalyst block actor, holding a SculkSpreader (charge cursors).
  • Cursor save/load as the game: cursors list written only when not empty; x/y/z ints, charge/update/decay/facing shorts; loaded only into an empty spreader, at most 32 cursors.
  • addCursors: the charge is split into cursors of at most 1000; a part past 32 cursors is dropped. A new cursor has update 0, decay 1, facing -1.
  • Script: Test.getSculkSpreader (structure block check first, undefined when the block holds no catalyst) and the SculkSpreader class: maxCharge (1000, 0 once the catalyst is gone), addCursorsWithOffset (floored offset added to the catalyst position), getCursorPosition (origin past the last cursor), getNumberOfCursors, getTotalCharge. The catalyst is looked up again on every call, as the game does.

These members were listed in the surface table but had no binding: test.getSculkSpreader was undefined.

How it was checked

Each value was read in the 26.60 Windows client: the GameTest helper binding, the catalyst block actor constructor/save/load and the spreader cursor save/load.
Syntax-checked locally; script-api-gametest gains a spreader save/load check and a GameTest using a server-placed catalyst.

Not done here: the cursors do not move yet (the catalyst tick, the spread through sculk and veins, and the bloom on mob death are not ported).

AI disclosure

Written by Claude Opus 5.5 (claude-opus-5-5): research in the game client, code and tests.

@NaySurGithub
NaySurGithub merged commit 3fd7854 into dev Nov 13, 2026
8 checks passed
@NaySurGithub
NaySurGithub deleted the feat/gametest-sculk-spreader branch November 13, 2026 22:10
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