1.3.1: aspect menu, war planning feature, bugfixes - #8
Merged
Conversation
… chat onto client thread, fix timer sort + tower-bar bounds, shared TowerBar parser, per-tick attack scan, value-key item-texture cache
… config
Attack-timer HUD gains guild-shared coordination, all over the bridge websocket:
- Defence scrape: reads slot 13 of the /guild attack GUI ("Territory Defences")
and shares it so a member who never opened the menu still sees the freshest
enemy-territory rating. Priority scrape > chat > advancement, except a recent
chat report wins when scouts reported conflicting scrapes (the attacker's
committed value breaks the tie).
- Who's-going: right-click a timer row to mark yourself heading there (left-click
still points the compass). Each member's HUD draws the goers' heads (capped at
5 + "+N"), IGN on hover from the tab list. Server-attributed identity.
- Lifetime: all of it is authoritative only while the timer exists; when a
territory's timer ends the mod tells the backend to clear it, and everything
resets on world change / disconnect.
- Configurable "Max attack-timer rows" slider (1-50) collapses a 30-40 war spree
into a "+N more" footer; the wall and beacon still use the full list.
Wynntils hides the guild war-timer scoreboard segment, so the timers are read
from a shadow Scoreboard fed by ConnectionScoreboardMixin at the head of
Connection.channelRead0 — upstream of the packet listener where Wynntils strips
it — and reset each connection so nothing stale carries over.
- Border on each goer's head: green once they're inside their marked territory, red while en route. This client reports its own inside-status (only on a border crossing) via warGoingInside; the border colour comes from the board's per-goer `inside` flag. - Cross-world skins: a goer on a different Wynncraft world instance isn't in our player list, so their profile has no textures and only a default skin is available. Resolve those by uuid from Mojang off-thread, cached, showing the default until it lands. Same-world goers still use the player list.
- Cross-world skin fetch is now rate-limited per uuid (30s) instead of clearing an in-flight guard on failure. skinFor runs every frame, so the old code re-submitted a failing Mojang fetch every frame while the head was visible; the backoff caps it and makes the failure/empty paths symmetric. - Inside-status crossings now must hold 500ms before being reported, and the settled value is what's sent. Border-edge jitter no longer spams updates, and because the mod sends the settled state (not a dropped one) the backend can't be left with a stale inside flag. The server-side inside debounce is removed accordingly.
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.
1.3.1: aspect menu, war planning feature, bugfixes