**1.8.1** - Added `/phtest`, merged from PlaceholderTest-OG: it checks that the MiniPlaceholders other plugins register resolve. Gated by the `utilities.phtest` permission, toggled by `PlaceholderTest`, and the expected tags live under `PlaceholderTestPlugins` in config.yml. **1.8.0** - Updated the player data bridge for TrueOG Purpur. `savePlayerData` now returns `void`, and `getSeenPlayers` uses Bukkit's offline player list. - Removed shared database APIs and the RocksDB dependency. MyWorlds now stores per-world profiles inside vanilla player profiles. - `upgradePlayerData` now uses Paper's public data converter. - Player data and inventory helpers now throw `IllegalStateException` on storage read or write failures. **1.7.9** - Updated the player data bridge for TrueOG Purpur's vanilla-only profile storage. MyWorlds manages its own profiles. - Added shared database APIs for plugins to manage their own column families and make atomic writes. **1.7.8** - Utilities-OG is now the single bridge to the TrueOG Purpur RocksDB player data storage. New world scoped API with raw NMS tags as `Object`: `getPlayerData(world, uuid)`, `savePlayerData(world, uuid, tag)`, `savePlayerData(uuid, perWorld)` (atomic), `hasPlayerData(world, uuid)`, `getSeenPlayers(world)`, `dropWorldPlayerData(world)`, `copyWorldPlayerData(from, to)`, plus `isPlayerDataApiAvailable()`. MyWorlds uses it for per-world inventories. - The bridge is plain reflection into the server. Paperweight, the dev bundle, reobfuscation and the `v1_19_R3` pin are gone from the build. - Inventory helpers convert items with Item-NBT-API (now a hard `depend`, so the helpers always work when the fork API is present): `setInventoryData` returns `boolean` and writes nothing for a player without a stored profile or when the server refuses the write. `getInventoryData` and `getHeldItemSlot` return empty results instead of throwing for such players. Added `isPlayerInventoryApiAvailable()`. - Added `flushPlayerData()` (durable WAL flush, needs the matching Purpur `PlayerDataApi.flush()`; false on older forks) and per-player `lockPlayerData`/`unlockPlayerData`. `setInventoryData` now holds that lock so an offline edit and a MyWorlds save cannot interleave their read-modify-writes. - Removed the unused `hasPlayerData(UUID)` single-arg overload; use `hasPlayerData(world, uuid)`. - Added a `RegisterPlaceholders` config toggle (default true) to disable the built-in MiniPlaceholders (`servers_name`, `player_display_name`); the placeholder API for other plugins is unaffected. **1.7.5** - Added `/ah` and `/auction` stubs explaining that TrueOG has no auction house, only the physical player market in the warzone. - Added `/info` stub that forwards to `/help` with the same arguments. - `/wild` and `/rtp` now print identical messages apart from the command name. **1.7.4** - Added offline player data API backed by Purpur internals via paperweight: `getInventoryData(UUID)`, `setInventoryData(UUID, ItemStack[])`, and `getHeldItemSlot(UUID)`. - Removed FastOfflinePlayer and its PostgreSQL / jasync dependency, along with the `postgres*` config keys. - Gradle now outputs a single reobfuscated `Utilities-OG-.jar` in `build/libs`; intermediate jars moved to `build/intermediates`. **1.7.3** - NoFlippy now covers fence gates as well as trapdoors under the `can-flippy` flag. **1.7.2** - Refactored NoFlippy-OG to enforce its rules more strongly. - Absorbed RandomDrops-OG into Utilities-OG. **1.7.1** - Merged `MissingCommands-OG` into Utilities-OG. **1.7** - Added `MessageFormat` as a selector for MiniMessage `StandardTags` families (`color`, `decorations`, `rainbow`, `gradient`, `reset`), and after Adventure 4.18 is shipped on TrueOG Network, also StandardTags.shadowColor(). - Added optional `MessageFormat` parameter to `trueogMessage`, `trueogRawMessage`, `trueogColorize`, and `trueogExpand`. Existing single-argument calls keep legacy behavior (every formatting tag active unless stripped). - `MessageFormat` includes callables `none()` and `full()` which can be respectively paired with `withColor`/`withoutColor`, `withDecorations`/`withoutDecorations`, `withRainbow`/`withoutRainbow`, `withGradient`/`withoutGradient`, `withReset`/`withoutReset` . - `stripFormatting` is now more comprehensive, using MiniMessage instead of Regex. - Added `stripFormatting(Component)` overload that flattens a Component tree to plain text. - Non enabled tags are now rendered as literal text instead of being consumed without being passed on by Adventure. - Refactoring for efficiency and maintainability. **1.6.7** - MiniPlaceholder output now bleeds formatting into surrounding text like legacy color codes, unless explicitly reset or stripped. **1.6.6** - Disabled entity cramming now that trueog/ChunkCap-OG and trueog/MobLimiter-OG establish a ceiling. - Split string-based player messaging into miniplaceholder expanding and non-expanding APIs. - Add `trueogRawMessage(Player, String)` and `trueogRawMessage(UUID, String)` for sending unexpanded or pre-expanded text with TrueOG formatting. **1.6.5** - Remove all PlaceholderAPI references and support MiniPlaceholders only. - Always register built-in MiniPlaceholders without a config toggle. - Ensure trueogMessage and other player-facing message helpers send on the caller's current thread. - Add trueogMessage(Player, Component) for direct Adventure component sends. - Remove the public async task API from the documented plugin surface. **1.6.4:** - Track live config file on git using [SubstAgent](https://git.trueog.net/trueog/SubstAgent). - Rename NoAdvancementsInCreativeListener to AdvancementsOnlyInSurvivalListener. **1.6.3:** - Initial implementation of FastOfflinePlayer: serialize(), deserialize(), getName(), getUniqueID(). - Populate initial FastOfflinePlayer database with jasync Postgres. - Unit testing for complete FastOfflinePlayer functions. **1.6.2:** - Fix console logging API. **1.6.1** - Log API MiniPlaceholder creation to the console. - trueogColorize API. **1.6:** - Add support for declaring MiniPlaceholders with arguments. - stripFormatting API. **1.5.2:** - Fix declaring MiniPlaceholders from external plugins. **1.5.1:** - Improve API documentation. - Fix trueogMessage(). **1.5:** - Create audience, global, and relative MiniPlaceholders in one new, simple API. - Expand and format MiniPlaceholders within MiniPlaceholders. - First 1.19 Stable Release. **1.4.7:** - Expand global and relational placeholders. **1.4.6:** - logToConsole API. **1.4.5:** - LuckPerms colors for . **1.4.4:** - Added UUID processing for API use outside of a bukkit context. **1.4.3:** - Revised APIs for better usability. - Updated gradle / dependencies. **1.4.2:** - Implemented trueOGUnregisterMiniPlaceholder API. - Implemented isMiniPlaceholderRegistered API. - Tested/Fixed other APIs. **1.4.1:** - Implemented AUDIENCE type MiniPlaceholder registration API. - Implemented MiniPlaceholder unregistration API. - Implemented trueogColorize API. - Refactored existing APIs. **1.4:** - Added TrueOG Message API (supports modern + legacy formatting in the same message, &* for rainbow, and MiniPlaceholder expansion). - Added TrueOG MiniPlaceholders support (currently supports expansion. Creation coming later.) - Added MiniPlaceholder (LuckPerms colors coming later.) - Added mock Bamboo Planks. - Mock Bamboo Wood is now crafted from 2x2 mock Bamboo Planks. - Added permissions for every command. - Major Refactoring. - Improved error handling. - Improved documentation. - Improved config file. **1.3.3:** - Update gradle build. **1.3.2**: - Refactor phantom toggle logic. - Enable phantom spawning by default. - Fix Jitpack build. **1.3.1:** - Make bamboo wood named bamboo wood. **1.3:** - Added new /ping command. Supports ping lookup for self and others. - Added /bing command to replicate the functionality of the old /ping command. - Renamed /buy to /ranks for CraftingStore compatibility. - Copied sub-commands as root commands. - New per-command permissions (described in README.md). - Added ranks menu and ping API. **1.2:** - Add "bamboo" wood recipe. **1.1:** - Added about message. - Fixed NullPointerException. - Expanded documentation. - Improved chat formatting. - Block per-player commands from console. - Merged in and deprecated Buy-OG.