6.1.0 - #6
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ef517ca98f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (LEGACY_DATABASE_SOURCE_URL.equals(primarySource)) { | ||
| primarySource = DEFAULT_DATABASE_SOURCE_URL; | ||
| } |
There was a problem hiding this comment.
Migrate the previous GitHub default source
Existing installations retain the prior default https://raw.githubusercontent.com/BitworksMC/HeadDB/refs/heads/master/heads.json in config.yml, but this migration only recognizes the new /api/v1/legacy/heads.json URL. Because the GitHub response has no catalog revision, upgraded servers remain at revision -1, bypass incremental synchronization, and—with the new default 15-minute updater—re-download and re-register the entire catalog every interval (including repeated preloading when enabled). Recognize the actual pre-6.1 default and replace it with the revisioned snapshot endpoint.
Useful? React with 👍 / 👎.
| if (definition == null) { | ||
| return null; | ||
| } | ||
| return new HeadsGUI(plugin, definition.key(), definition.title(), definition.heads(), definition.permissionCategory()); |
There was a problem hiding this comment.
Preserve page state when constructing fresh GUIs
When trackPage is enabled, callers read the page from the HeadsGUI returned here, but every call now constructs a new GUI whose SafePaginatedGUI also owns a new, empty ConcurrentGUIRegistry. Consequently reopening any database category always falls back to page 0 instead of the previously visited page; the fresh inventory model needs to share navigation state independently of each GUI instance.
Useful? React with 👍 / 👎.
| List<Head> heads = this.headDatabase.getHeads(); | ||
| if (heads != null) this.menuManager.registerDefaults(this, heads); |
There was a problem hiding this comment.
Invalidate cached head items during runtime reload
If a head has already appeared in a menu or command, BaseHead#getItem() keeps its generated ItemStack indefinitely. Re-registering menu definitions here therefore does not apply reloaded head.name, head.lore, or displayed {cost} values to those materialized heads, despite /hdb reload claiming those settings were reloaded; clear/rebuild the item caches or generate items from the replacement configuration.
Useful? React with 👍 / 👎.
HeadDB 6.1.0 Changelog
Managed catalog and compatibility
servers.
/hdb submit, headdb.net submission links throughout the modern menus,and an optional post-search link that carries supported filters into the web
catalog.
Commands and catalog operations
/hdb status,/hdb sync,/hdb reload,/hdb inspect,/hdb recent, and/hdb languageto both modern and legacy artifacts./hdb give <head>and/hdb give <amount> <head>formswhile preserving the administrator player-target form.
all/any matching. Website copy actions now emit valid plugin commands.
reliably and linked to their managed website records.
API and storage
and added/edited/removed update listeners while keeping Java 8 API bytecode.
default and existing local data remains compatible.
pack discovery.
Paper, Folia, and reliability
per open and replacing shared page/navigation registries with concurrent
implementations.
reports its source, revision, last success, and failure details.
Integrated headdb.net release
webhook retry, head reports, published metadata edits, removal recovery, and
merge redirects.
throttles, and optional encrypted Restic off-host PostgreSQL backups.