Repository navigation
feat: show the void taking a harvested block over a second - #122
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each harvest, by a Void Displacer or a Void Siphon, and a spent Displacer becoming Voidstone, posts a VoidTakesBlockEvent and sends a VoidTaking to the players tracking the position. The client draws what was there over the Voidstone, a hair larger, and eats it away through 12 stage masks over 20 ticks: a solid block's own model shedding crumbs, a fluid as a cube of its still texture, air as the End's starfield. The masks are drawn as geometry, each face only over the pixels the void has not reached, so the vanilla render types serve. The server mechanic is unchanged: the position is Voidstone from the harvest's tick. The 12 masks are placeholders scripts/build-textures.py generates, until #107 draws them. Closes #98 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From the review: a taking is dropped when the player leaves its level, a glowing solid keeps its glow while taken, crumbs are shed from its open faces rather than inside the Voidstone, a fluid's or air's cube shows every face no opaque block covers so none of a lake's Voidstone shows early, and it is drawn half a percent larger a side so depth tells it from the Voidstone a chunk away. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # src/main/java/io/github/_5thlayer/voidworks/displacer/DisplacerBlockEntity.java
# Conflicts: # src/main/java/io/github/_5thlayer/voidworks/Voidworks.java
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #98. The design is the Harvesting paragraph in
docs/spec/void-energy.md("Every harvest also shows the void taking the block…"), grilled on the issue; the agent brief is the issue's last comment.What changed
VoidTaking.show, which posts a publicVoidTakesBlockEvent(position, what it held) on the NeoForge bus, then sends aVoidTakingpayload to the players tracking the chunk. The mechanic is unchanged: the position is Voidstone in the harvest's tick, with the same yield, network and Frontier. The 30-particle crumble bursts are gone; the chorus sound stays.VoidTakings): what was harvested is drawn over the Voidstone, 1% larger, and eaten away through 12 cumulative stage masks over 20 ticks (TakingStages,TakingMask), each face's masks turned one of 8 ways by its position. A solid is its own model, shedding crumbs from its open faces; a fluid is a cube of its still texture, full bright when it glows (lava); air is the End's starfield. A taking is dropped when its chunk unloads or the player leaves its level.assets/voidworks/textures/void_taking/stage_1..12.png, generated bytaking_masks()inscripts/build-textures.py. A mask paints, at ≥50% alpha, every pixel the void has reached by its stage. The final art is Draw the final displacement stage masks #107.For the reviewer
VoidTakesBlockEventis new public API, the Module's first event, and the seam the game tests watch, as a FakePlayer drops the payload. It has a changelog line.main(feat: a void displacer buys zone upgrades with motes #105): the only conflict wasDisplacerBlockEntity's imports.Testing
sh ./gradlew build: passes, with 22 new JUnit tests (TakingStagesTest,TakingMaskTest, andShippedMasksTest, which checks the shipped PNGs are 16×16, cumulative, and full by stage 12).runGameTestServer: all 257 pass, among them 6 newvoid_takes_*tests (a Displacer's terrain, a spent Displacer, a Siphon's terrain, lava and air, and nothing for a refused harvest), each seen failing before the wiring./code-review(standards and spec) found no hard violation and no missing requirement; its fixes are in e10e676.🤖 Generated with Claude Code