Skip to content

6.1.0 - #6

Merged
GoodrichDev merged 9 commits into
masterfrom
new-api
Aug 23, 2026
Merged

6.1.0#6
GoodrichDev merged 9 commits into
masterfrom
new-api

Conversation

@GoodrichDev

Copy link
Copy Markdown
Member

HeadDB 6.1.0 Changelog

Managed catalog and compatibility

  • Moved the head catalog to the managed API at headdb.net.
  • Added revision-based updates and an on-disk recovery cache for modern Paper
    servers.
  • Added complete-catalog support for legacy servers from 1.8.8 to 1.20.6.
  • Switched submitted skins to Mojang-hosted textures for reliable rendering.
  • Added /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

  • Added /hdb status, /hdb sync, /hdb reload, /hdb inspect,
    /hdb recent, and /hdb language to both modern and legacy artifacts.
  • Added self-targeting /hdb give <head> and /hdb give <amount> <head> forms
    while preserving the administrator player-target form.
  • Aligned in-game and website search with quoted filters, multiple IDs, and
    all/any matching. Website copy actions now emit valid plugin commands.
  • Stored catalog IDs on modern head items so held heads can be inspected
    reliably and linked to their managed website records.

API and storage

  • Added structured, sorted, paginated Java API searches, catalog health status,
    and added/edited/removed update listeners while keeping Java 8 API bytecode.
  • Added optional MySQL player storage for proxy networks. SQLite remains the
    default and existing local data remains compatible.
  • Added English/Spanish personal language selection and server-provided message
    pack discovery.

Paper, Folia, and reliability

  • Restored the modern Folia support declaration after isolating inventory trees
    per open and replacing shared page/navigation registries with concurrent
    implementations.
  • Runtime reloads rebuild menus and localization safely; catalog synchronization
    reports its source, revision, last success, and failure details.

Integrated headdb.net release

  • Added favorites, public/private collections, share pages, and YAML export.
  • Added recent-update discovery, submission editing, withdrawal and resubmission,
    webhook retry, head reports, published metadata edits, removal recovery, and
    merge redirects.
  • Added durable account submission cooldowns, application and Nginx request
    throttles, and optional encrypted Restic off-host PostgreSQL backups.

@GoodrichDev
GoodrichDev merged commit 0fbef16 into master Aug 23, 2026
7 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +145 to +147
if (LEGACY_DATABASE_SOURCE_URL.equals(primarySource)) {
primarySource = DEFAULT_DATABASE_SOURCE_URL;
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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());

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines +234 to +235
List<Head> heads = this.headDatabase.getHeads();
if (heads != null) this.menuManager.registerDefaults(this, heads);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

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