Repository navigation
Conversation
Full-screen packs now override core/gui and pass prompt clip inputs through core/text and core/position_tex_color. While the client's world age sits in the prompt band (12000 ticks above the HUD band), they hide only what Minecraft 26.2's anvil draws: sprites inside its rect, the screen's dimming gradient, quick-craft slot highlights, fills in the rename field's band, and text in the field and label bands. Chat, titles, the action bar, and HUD panes overlapping the anvil stay. The anvil geometry and colours live in hud/renderer/prompt.rs, and the canvas contract gains prompt_world_age.
…n windows FullscreenView.promptText(initial, onEdit, onDone) is now the keyboard: an untitled anvil the pack hides, whose renames the view draws on its canvas, re-rendering at once. Escape or any click finishes with the text; there is no cancel. It is marked @ExperimentalFullscreenApi. The native dialog stays as promptTextDialog(title, initial, onDone). Both kinds share one pending prompt in MinestomTextPrompt: opening one replaces the other, clearing the dialog or closing the anvil and restoring the band, slots, and XP first. A container takeover or the window ending resolves null, as before. The hovered tooltip is hidden while any prompt is open.
…ver the selection
…aracters, and take over open containers Clicks on the rename field or inside the anvil send no packet, so only Escape reliably finishes the prompt; slot and outside clicks remain best-effort. Text past the anvil's 50 characters is no longer continued in a fresh field, as the client cannot edit the kept prefix. A keyboard anvil opening over a server container now replaces it in the fullscreen's container state, so the prompt band applies and finishing restores the hidden band and slots.
oglassdev
marked this pull request as ready for review
October 16, 2026 04:48
Clouds scroll with the world age, so the 12000-tick jump between the HUD and prompt bands moved them. The prompt band now sits a whole number of cloud periods above the HUD band. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Part of #115
The full-screen text prompt was a native dialog that covers the whole canvas, so the player can't see the window they're typing into. This lets them type straight onto the canvas: an untitled anvil captures the keys, the pack's shaders hide it, and the view draws the text itself. It is now the default
promptText, marked experimental, and the dialog stays available aspromptTextDialog.API
onEditgets the whole text after each accepted rename and re-renders at once, without waiting for the next tick. Escape or any click in the anvil's window, including outside it (slot -999), finishes with the text. There is no cancel; apps that need one usepromptTextDialog.onDone(null)happens only when the prompt is replaced, a server container takes over (next tick), or the window ends.MinestomTextPrompt). Replacing a prompt of either kind resolves it with null after the replaced kind is off the client: the dialog is cleared, or the anvil is closed and the band, slots, and XP are restored. A keyboard replacing a keyboard reseeds the same anvil. Canvas input stays disabled and the hovered tooltip is hidden while either kind is open.OpenFullscreengets the matchingpromptTextandpromptTextDialog.showdoes nothing once the window has ended.Clipping
While the anvil is open, the client's world age sits in a prompt band 204800 ticks above the HUD band. That gap is two full cloud cycles, so the clouds don't move when the anvil opens or closes. The band comes from the manifest's
prompt_world_age. In that band, GUI passes hide only what the 26.2 anvil draws:core/position_tex_color): anything inside the 176×166 anvil rect;core/gui, newly overridden): the exact0xC0101010/0xD0101010dimming gradient at the screen corners,0x80FFFFFFquick-craft highlights at the anvil's slot positions, and the rename field's band (caret and selection);core/text): the field band and the two label bands only.So chat, titles, the action bar, and HUD panes over the anvil stay visible. All of the anvil's geometry and colours, checked against the 26.2 client, are in
crates/window-core/src/hud/renderer/prompt.rs.Notes
player.inventory.update(player), so the inventory goes to the player directly instead of through the inventory's viewers.Checks
just test-rust -p window-core fullscreen,just test-rust -p window-core hudfullscreenupdated (newgui.*, changed text and sprite shaders,debug.jsonfingerprints, andpromptWorldAgein the generated entries)just gradle :runtime:test --tests '*Fullscreen*'and:minestom:test --tests '*Fullscreen*',:example:compileKotlinpnpm check:ts,just fmt-check,just lint