Update Changelog
Please consider leaving a good review for the plugin.
- Added expiration support for one-time /pc_tp teleport tokens.
- Added automatic cleanup for expired /pc_tp tokens during the scheduled token GC task.
- Improved update checking so the HTTP request runs async, while the version result is handled safely back on the main server thread.
- Added connection and read timeouts to the update checker for more reliable network handling.
- Cleaned up the Spigot update-check URL handling.
- Switched subcommand storage from HashMap to LinkedHashMap for stable command/help ordering.
- Preserved original username casing in log output instead of forcing lowercase.
- Improved time-ago formatting to safely handle negative clock differences.
- Updated time formatting to use Locale.ROOT for consistent decimal output across locales.
- Improved /pc_tp token validation so tokens are consumed immediately and expired tokens are rejected.
- Updated /pc_tp tab completion to return no suggestions directly.
- Changed date locale access to use the cached plugin value instead of rereading config each time.
- Updated Editor API server initialization to use the cached dateLocale value.
- Fixed a possible NullPointerException in system log detection by using a safe UUID comparison.
- Removed redundant token removal logic in PcTpCommand.
- Removed unused indent calculation code from log component building.
- Removed unused imports and minor internal cleanup.
Discord Support
Shutdown / WorldEdit drain fixes
- Fixed plugin shutdown error caused by WorldEdit queue draining trying to register Bukkit tasks after the plugin was already disabling.
- Removed scheduled/asynchronous WorldEdit drain usage from onDisable().
- Changed shutdown flow to use a direct, synchronous WorldEdit queue drain instead.
- Kept shutdown order safe: unregister WorldEdit bridge first, drain WorldEdit queues second, flush database queue last.
ProtectCore shutdown flow
- Updated ProtectCore.onDisable() to stop new WorldEdit hooks before draining pending edit logs.
- Replaced WELoggingExtent.flushAllQueues(...) + async drain waiting with WELoggingExtent.flushAllQueuesDirect().
- Ensured database shutdown happens only after WorldEdit entries have been pushed into the DB queue.
- Preserved final scheduler cancellation at the end of shutdown instead of relying on scheduled drain tasks.
WELoggingExtent changes
- Added a direct shutdown-safe queue flush path that does not use runTask, runTaskTimer, BukkitRunnable, or Paper schedulers.
- Direct drain now polls queued WorldEdit entries and logs them straight into the database queue.
- Direct drain builds log metadata the same way as the normal scheduled drain, including origin, material, block data, and pretty material name.
- Direct drain safely handles unknown/missing worlds by dropping queued entries with a warning instead of crashing shutdown.
- Reset drain state cleanly after direct flushing finishes.
Stability / safety improvements
- Avoided illegal task registration during plugin disable, preventing IllegalPluginAccessException.
- Reduced shutdown race risk between queued WorldEdit drain work and database shutdown.
- Kept database queue acceptance window open long enough for shutdown-drained WorldEdit entries to be persisted.
- Improved reliability of graceful shutdown for pending WorldEdit block change logs.
Please consider leaving a good review for the plugin.
Discord Support
Search & Performance Update
- Improved search performance for PLAYER_MESSAGE and PLAYER_COMMAND logs.
- Added a dedicated fast path for chat and command searches.
- Message and command searches now use details-only text matching instead of scanning full metadata.
- Kept metadata loading disabled for message/command rows in the UI path.
Search Improvements
- Added unified text-search handling for more consistent search behavior.
- Improved multi-word FULLTEXT query handling.
- Added smarter index selection so FULLTEXT searches no longer get forced onto weaker normal indexes.
- Improved action-specific search performance.
- Improved per-user action search performance.
- Improved message/command-specific FULLTEXT searching.
Database / Indexing
- Added support for dedicated message/command search text handling.
- Added support for a dedicated FULLTEXT index for chat/command searching.
- Added support for an action + time index to improve action-specific browsing.
- Added support for a player + action + time index to improve per-user action browsing.
Code Cleanup
- Reworked filter-building logic to reduce duplicated query code.
- Updated user search paths to use the new shared search logic.
- Updated area search paths to use the new shared search logic.
- Reduced duplicate SQL-building across paged, keyset, and windowed searches.
- Made search behavior more consistent across paged, keyset, windowed, user, and area queries.
Please consider leaving a good review for the plugin.
Discord Support
Synopsis
This update mainly focuses on making the plugin faster, safer, and more scalable by improving database startup, schema/index design, query performance, retry behavior, and item/container logging so searches and rollbacks are more reliable. It also tightens the editor and API side with safer rendering, cleaner pagination, better async/tab handling, stronger filtering/date handling, and reduced desync or stale-state issues.
For best results I recommend that you do /po purge 0 and start your database storage from the begining.
- Added maintenance mode protection to stop DB queues from growing too large.
- Improved shutdown handling so queued work flushes more safely.
- Switched Hikari to use MariaDbDataSource directly.
- Split DB setup into fast startup + heavy async migrations.
- Added async schema updates for name/lore search columns and FULLTEXT indexes.
- Added generated chunk columns cx and cz.
- Added new chunk-based indexes for faster rollback and area searches.
- Updated queries to use cx/cz and sort_ts for better performance.
- Improved filtering for materials, entities, ignored usernames, name, and lore.
- Added safer retry logic for transient DB update failures.
- Added dedicated database fields for searchable item data, including name, lore, and enchants.
- Switched item name, lore, and enchant search data from JSON storage to dedicated database columns for better reliability and performance.
- Cleaned up item frame logs so even basic items now store usable item data instead of sometimes being empty.
- Expanded item search logging to cover more important cases, including pickup/drop, item frames, armor stands, and container add/take.
- Improved container tracking to reduce duplicate logs and store cleaner snapshots.
- Added better handling for shulker box snapshots when placed with items already inside.
- Updated database startup so the essential setup runs first, while larger migration tasks run after startup to reduce load during boot.
- Hardened the editor UI against injection by replacing fragile string-built HTML/JS with safer escaping and DOM-based rendering.
- Fixed async race conditions in log loading so stale requests no longer append into the wrong tab or corrupt loading state.
- Restored consistent tab behavior: switching tabs now cleanly resets and reloads with correct per-tab pagination state.
- Improved metadata rendering and item-detail display, including safer parsing of colored text/lore and lazy-loaded metadata panels.
- Cleaned up client pagination by using keyset cursors (lastTimestamp / lastId) instead of brittle page-based behavior.
- Tightened server-side request flow with better token handling, refresh support, gzip responses, and more up-to-date stats rendering.
- Fixed backend filtering edge cases, including safer config handling, better request parsing, and consistent timezone-aware date filtering.
- Simplified API usage toward safer, more reliable same-origin behavior and reduced frontend/backend desync issues.
- Removed dead code / stale state from earlier refactors, making the editor easier to maintain without changing intended features.
Please consider leaving a good review for the plugin.
Discord Support
- Small hotfix for lookup when using an action and the include filters together some material entries didn't show up at the results but they existed without the include.
- Small updates here and there.
Please consider leaving a good review for the plugin.
Discord Support
New purge command (with prompts + confirmations):
- Added /po purge to remove old data (actions + orphan snapshots) and optimize automatically if there’s enough free disk space.
- Removed startup auto-maintenance/optimization (unsafe on low disk space machines).
- Added a one-command full database delete + recreate option.
- Various code cleanup + optimizations.
Examples
⚠ Warning
- Keep last 30 days (delete everything older): /po purge 30
- View progress / results anytime: /po purge status
- Stop purge: /po purge stop
Please consider leaving a good review for the plugin.
- /po purge 0 = deletes everything and recreates the database (use when disk space is low).
- Purging alone won’t shrink the DB file; optimization does. Optimization will run automatically if you have enough disk space. Optimization requires free disk space ≈ DB size (e.g., 100GB DB → ~100GB free). If you don’t have that, use /po purge 0.
Discord Support
- Message and command action categories will now have a text search function.
- Action categories will have specific and dedicated filters for them that will switch on the fly as you change action categories
- General cleanup and error catching for the Web UI.
![]()
Please consider leaving a good review for the plugin.
Discord Support
- Made it so that inspect mode is just for single blocks only.
- Added a few missing armorstand actions to be recorded by the plugin.
Please consider leaving a good review for the plugin.
Discord Support
