Skip to content

UltiTools-API 6.3.2 Release Notes ​

UltiTools-API 6.3.2 is a correctness patch for module loading and updates, configuration handling, storage and diagnostics, with sender-aware command completion and startup warnings for undeclared configuration keys. The full list for module authors is in COMPATIBILITY.md; the release itself is v6.3.2 on GitHub.

Fixed ​

  • Distinct modules whose main classes share a simple name are no longer dropped from dependency resolution, while existing dependency aliases remain supported (#770).
  • Component discovery in JARs respects package boundaries instead of also scanning sibling packages with the same textual prefix (#808).
  • Component discovery from directories and module metadata reads correctly resolve paths containing spaces or other URL-escaped characters (#785).
  • Deferred module removals remain recorded when JAR metadata cannot be read, and update staging reports metadata or hash read failures instead of misreporting a missing module identity (#785).
  • Failed external-plugin registration unwinds attempted task, player-cache, event, command and listener registrations before releasing the refused plugin's context (#796).
  • SQLite lock waits measure actual elapsed time so native profiling signals no longer prematurely exhaust the existing wait budget (#771).
  • JDBC connections are discarded when restoring auto-commit fails after a completed transaction, without changing its completed commit or rollback outcome (#793).
  • In-memory query filtering and sorting preserve standard finite numeric precision, while JSON reads and deletes reject invalid non-equality null filters with a typed data-access exception (#789).
  • Missing configuration keys with declaration comments can be inserted after YAML keys with no written value without falsely refusing the write (#772).
  • Configuration initialization reuses class discovery and document style detection avoids repeated text scans, reducing work without changing validation or file formatting (#792, #794).
  • Configuration conversion warnings stay on one line, and framework YAML load and migration diagnostics report the problem location without exposing parser excerpts (#790, #795).
  • Refused configuration edits name declared keys and request corrected values instead of a server restart (#791).
  • Partial module reload summaries appear once in the console, accurately describe timing updates applied before a later failure, and translate framework timing and cooldown reasons into Chinese (#773, #791).
  • Module load diagnostics link to the public compatibility guide and identify an older server API as another possible cause of skipped classes (#767, #804).
  • /upm check, /upm update <module> and /upm update all report a pending startup check instead of consuming partial update results (#787).
  • Diagnostic fallback failures no longer recurse through broken logging handlers, and GUI frame exceptions use one plugin warning without allowing a logging failure to interrupt subsequent frame processing (#803).

Changed ​

  • Configuration initialization warns about keys or subtrees without an @ConfigEntry declaration, without logging their values, removing them or repeating the warning on ordinary reloads (#799).
  • Module tab completion supports console, RCON and other command senders through sender-aware providers, while filtering unavailable targets, permissions and OP requirements before invoking providers (#801).

Deprecated ​

No new deprecations; the existing 6.3.1 deprecations remain unchanged.

Breaking changes ​

No public API removals or incompatible public/protected signature changes were identified in this patch; existing player completion APIs remain available.

Custom registered tab completers now also receive non-player requests, so module authors must use TabCompletionContext#getSender() and handle a null getPlayer() before accessing player state (#801).

Contributors

Released under the MIT License.