Update — September 25, 2026

Update — September 25, 2026

Creative

  • perf: three hot-guard trims from the Sep 23 oneblock profile

Rewards

  • test: pin boundary-check order, returns delivery pass and island-sweep decisions (#125)
  • 🐛 Fix fix(messages): missing keys use bundled text; stamp commit in version
  • 🐛 Fix fix(ledger): share one store base; guard pending-returns.yml
  • ✨ New test(snapshot): extract rollover state machine; add unit tests and CI
  • 🐛 Fix fix(trophies): keep trophies out of recipes and trades; stack to 1
  • 🐛 Fix fix(trophies): let held trophies use blocks; trim two hot paths
  • feat(events): event trophies via grant; tell players when granted
  • feat(claim-menu): keep menu open, Claim all, Bedrock details and Back
  • feat(trophies): /trophy alias, a usage lore line and a first-claim tip
  • 🐛 Fix fix(trophies): never drop a returned trophy; keep it owed until it fits
  • 🐛 Fix fix(podium): crown only real scores, mark ties, read all-time top-N
  • feat(announcements): trophy deadlines, join nudges, rollover digest
  • feat(hub): /trophies hub; /trophies last lists last period only
  • 🐛 Fix fix(trophies): return trophies from reset or deleted BentoBox islands
  • feat(snapshot): final capture before each reset, confirm right after
  • feat(moderation): eligibility rules, disqualify/requalify, safe revoke
  • 🐛 Fix fix: review residuals — DST previous period, capture read, exact tie warning, tie-out rows, name refresh (#125)
  • test: RewardConfig, RotationSchedule and reconcile-gate coverage; ajLB stub on the test classpath (#124)

World Guard

  • perf: world-config lookup by reference, session read before computeIfAbsent

Farming

  • feat(api): cosmetic work visuals for automation working a field crop (api 1.7.0)
  • ⚖️ Tweak perf(fieldcrops): raise SHARD_COUNT 64 -> 256, scale the reshard wait
  • 🐛 Fix fix(skilltree): convert PyroFarming Skill Archives and free stale archive slots (#815) thread
  • 🐛 Fix fix(shop): stop paying the price on the item for sell ids nothing defines (#816)

Fishing

  • Persist seasonal event armings and hunt state across restarts (#587)
  • Bingo: an expired round counts as the round a back-to-back winner sits out thread
  • Biomes & pools: port the live biome rename, opt-in legacy aliases, dead gates and Nether-only fish out of the draws (#615, #631)
  • Bingo: safer defaults, join notice + deadline, back-to-back disclosure, Bedrock where-to-catch, /fish bingo status (#597, #621, #622, #623, #625)
  • Baits & HUD: combo/bait/booster placeholders, removebait confirm, Bedrock shop lore, bait mapping doc (#619, #673, #683, #684)
  • Augments & rod skins: Bedrock recipe pages, cauldron ownership + Bedrock tap, salvage sink, re-skin owned rods (#594, #611, #612, #657, #659, #661)
  • Tournaments: own-standing placeholders, Bedrock %center%, reachable RANDOM_CATCH targets, quiet empty rounds, offline winners, /ft help (#624, #626, #656, #658, #660, #679)
  • Catch pipeline: bait-use switch, crouched reel, hot-path copies, combo switch, tsunami lore, Star Fall spawn, biome-at-hook (#596, #613, #614, #616, #617, #618, #620)
  • Deliveries: contained reward, join reminder, hand-in detail, fish-bag hand-in, Bedrock transit, removedelivery numbers, opt-in knobs (#600, #602, #633, #634, #635, #636, #637, #638, #639, #675, #685)
  • Economy: bulk sell/gut, sale preview, Fish of the Day visibility, scales net, locale-safe tokens (#602, #632, #640, #641, #642, #643)
  • Reload & config: pre-flighted reload, full validate coverage, health diagnostics, operator docs (#601, #644, #645, #646, #647, #648, #650, #652, #654)
  • Shellstice: refuse the orb spend while the event is not running (#589)
  • Fish of the Day: pick only fish everyone can catch (#585)
  • Totems: break room check, claim probe, ghost anchors, admin tooling, Bedrock detail, deposit order (#595, #603, #604, #605, #606, #607, #608, #609, #610, #655)

KOTH

  • #428 follow-ups (#425 group): adventureLinkage flags only ClickEvent.Action switches, totalCap wording, idle-lines lore
  • Perf quick wins: snapshot-free editor holder lookups (#374), boss bar name dirty-check (#376)
  • Round-end rewards: capture-end on round end, raw username tokens, offline SCORE rewards, end-reward to the member on the point, CaptureEnd pairing (#362, #363, #364, #371, #372)
  • Contest modes and zone feedback: payload owner release, no zombie reinforcements, %progress_owner%/%state%, in-zone action bars (#365, #366, #389, #380)
  • Team rewards, AFK/flying/vehicle eligibility, SCORE team handover (#383, #397, #398)
  • Teams, leaderboards & DB: BentoBox island keys + display names, warm win caches/boards, DB auto-reconnect & write retry, pool defaults, placeholder docs
  • Config & schedules: refuse saves over hand edits, reload validation, schedule list/preview/fire, weighted/shuffled/pre-drawn draws, restart awareness (#367 #368 #373 #399 #400 #401 #396)
  • Broadcast scope + player controls: broadcast-distances, /koth toggle, sound category, leading-edge swap-settle, player /koth status + join notice + /koth warp (#377 #378 #381 #384 #385) thread
  • Player info: /koth next, objectives and reward previews, typable list names, labelled clocks, idle holograms (#379 #382 #386 #390 #391 #392)
  • 🐛 Fix Bedrock & editor fixes: Floodgate-aware Bedrock detection, Bedrock-safe palette, CONFIRM/completion/givestarter fixes, legacy-chat prompt capture (#387, #388, #402, #369)
  • Build on the 26.2 API (JDK 25 toolchain), current JDBC libraries + JDK HttpClient webhooks, git version stamp (#406 #407 #408)
  • Bedrock /koth form menu (Floodgate/Cumulus, optional) + clear the Bedrock cache at join (#386, #418, #420)
  • Rewards follow-ups: pending-rewards file safety, own-token offline holds, [now]/[once] reward markers, honest fallback warnings (#420)
  • Player surface follow-ups: combat tag, warp and join notice, toggle, setwarp flag, %warp_hint%, next/list, objectives, placeholder text (#420)
  • #420 follow-ups: zone modes, BentoBox team keys, win cache races, database notes
  • 🐛 Fix #420 follow-ups: editor controls for idle lines and the rewards display, shadowJar/linkage build fixes, webhook text limits
  • Scheduler follow-ups (#420): console schedule editing, draw memory across restarts, resume interrupted rounds, #415/#417 review notes
  • #428 rewards follow-ups: pending-rewards header tokens, markers in front of TOP:, no empty reward lines, honest rewrite warning, copy seam
  • #428 follow-ups for #424: migration retry wording, foxkoth_meta probe, overlap-slot claims, doc corrections
  • 🚫 Removed #428 scheduler follow-ups: draw-memory persistence, resume countdown, schedule verbs, resume/disable wording
  • Player surface follow-ups from the #423 review: /koth toggle order, rewards-display warning and top-level scalars, %warp_hint% threading, docs (#428)
  • 🚫 Removed Bedrock forms follow-ups: pin the adapter's callers, text fallbacks, quiet disable race, pinned Floodgate API (#428)

Loot

  • feat: /lootin purge for data files whose container is gone
  • 🐛 Fix fix: make container storage durable and race-free
  • 🐛 Fix fix: loot generation fills, reads and clears the same slots
  • 🐛 Fix fix: protect loot containers from break dupes, hoppers and merges
  • 🐛 Fix fix: track elytra frames on every load and keep the packet thread off Bukkit
  • 🐛 Fix fix: config fallbacks, /lootin info and test, and dead code cleanup
  • 🐛 Fix fix: storage follow-ups: unreadable files, shutdown writes and Folia races
  • 🐛 Fix fix: one open event before any change, and a capture that survives hoppers
  • 🐛 Fix fix: keep golems out, and settle breaks only once they happen
  • 🐛 Fix fix: optional PacketEvents, and elytra tracking that survives reloads
  • 🐛 Fix fix: Spigot 1.20.3+, Folia GUI saves at disable, and dead code
  • 🐛 Fix fix: copies get their own data, and destroyed data is kept for restores

Minions

  • perf(chunkloader): copy the destination grid only for the furnace and crafter gates
  • feat(fishing): require water near a fishing minion and tell the owner when it has none (#465)
  • feat(farmer): keep swinging at FoxFarming crops between work ticks
  • 🐛 Fix fix(menu): no "connect chest" button on chunk loaders (#468)
  • 🐛 Fix fix(packet): only send a team REMOVE to a client that holds the team (#469)
  • 🐛 Fix fix(collector,slayer): work the square the range flames show, not a sphere (#470)

PvP Regions

  • Address the wave dungeon review leftovers (#3)
  • ✨ New Add co-op wave dungeon mode to arenas

Vouchers

  • 🚫 Removed Elysium notes: /withdraw elysium via FoxFarmingAPI, shipped disabled (#95)
  • Protect vouchers from vanilla mechanics and accidental block redeems; cheaper interact path (#74 #75 #82 #93)
  • 🐛 Fix Fix /voucher give lookup and feedback; run Tebex voucher commands only after payment; correct /xpbottle %amount% (#76 #77 #78 #81)
  • Report config.yml gaps instead of rewriting it; accept flat sound entries; migrate lang.yml defaults; upgrade runbook (#80 #79)
  • Single-transaction redeem, batched note/bottle mints, indexes, recipient/source columns (#83 #84)
  • /withdraw and /xpbottle: amount shorthand, all/max, informative bare commands, aliases, /vouchers help (#86 #87 #88 #94)
  • Specific error messages with refs, the live lang keys, redeem messages, richer requirements (#90 #91 #96)
  • Bedrock: confirm form names the voucher; forms for bare /withdraw and /xpbottle; redeem tip (#92)
  • Configurable cash note / XP bottle templates; custom-model-data, item-model, glint and flags (#90 #98 #86 #93)
  • Admin tools (/voucher inspect, lookup, revoke, restore, history, stats, validate), load-time config validation, /vouchers check (#97 #99 #84 #93)
  • Queue overflow instead of dropping it; /vouchers claim; join notices; deliver to the live session (#89)
  • Sneak to bulk-redeem; /withdraw merge and /xpbottle merge; confirm-menu-default and per-voucher bulk: false (#85)

Warps

  • feat(search): find warps by what their QuickShop shops sell (#214)
  • 🐛 Fix fix(search): keep CHAT-mode search answers out of legacy chat plugins (#177)
  • 🐛 Fix fix(stats): durable explored credits, empty-until-loaded placeholder, lock-index unloaded-world throw (#179 #180 #181)
  • perf: load warp destinations asynchronously; never sync-load neighbours for safety checks (#184, #187)
  • 🐛 Fix fix: main/sub swap side effects — ratings/categories in memory, owner-level bump cooldown, ban and whitelist (#194 #195 #196)
  • perf: exact lookup first in the physics handler; gate the lock guards by locked-sign reach (#185, #186)
  • Owner lookup: no Mojang calls, Bedrock/nickname/prefix matching, suggestions, /pw aliases
  • 🐛 Fix fix(featured): carry paid slots through moves, no charges for locked warps, feed the queue, honour free prices
  • 🐛 Fix fix: leaderboard sort race, cooldowns across relog, vanished visitors, self-favourites (#182 #197 #198 #199)
  • perf: menu item template churn and placeholder/PAPI cache leftovers (#188, #189)
  • feat: mark, sink and explain locked warps; skip them in random (#209)
  • 🐛 Fix fix(ux): literal commands in click messages, reasons in dead-end errors, help/label consistency (#204 #210 #211)
  • chore(logs): one-line boot hints, /wwarp admin purge-inactive, configurable Hikari lifetimes (#217)
  • ✨ New Warp creation UX: lenient [welcome], create/delete how-to, keep warp on header edit, visible descriptions, unsafe-warp notices
  • Bedrock forms (Floodgate), My warp hub, confirm before paid actions (#200 #201 #202 #203)
  • Menu: configurable favourite clicks, page indicator, fuller grid (#208, #215)
  • feat(search): Paper dialog search prompt for Java players (#201 Java half)
  • feat(bedrock): commands form for /pwarp help, settings form for /pwarp toggle (#211)
  • 🐛 Fix fix(label): typed label kept by buttons and single-reader clicks, broadcasts on the default label; no hard-coded labels in messages (#241)
  • 🐛 Fix fix(purge-inactive): report every row at shutdown, no stack trace on a stop, accurate boot summary (#239)
  • 🐛 Fix fix(teleport): re-check bans and locks after the async destination load (#240)
  • 🐛 Fix fix(featured): refund flags need admin.featured; no dead-end featured offers; release stranded slots with a refund (#237 #238 #244)
  • 🐛 Fix fix: owner lock follows the main role; management and creation UX leftovers (#236 #243)
  • 🐛 Fix fix(bedrock): forms follow-ups — parity, confirm price pinning, refusal notices, status consolidation (#242)
  • 🐛 Fix fix(search): item search follow-ups — exact names above sellers, trusted names, coverage, freshness, /pwarp shop fallback (#245)
  • 🐛 Fix fix(menu): fill menu placeholders in one pass so player-typed values stay literal (#254)

Parkour

  • feat(duel): watch past duels back — both runs, racing again
  • 🐛 Fix fix(menu): Bedrock form buttons re-check the session; an unbuildable form falls back to the chest (#1224, #1226)
  • 🐛 Fix fix(menu): paginated rows go where the layout says, not wherever firstEmpty() points (#1222)
  • 🐛 Fix fix(menu): open() says whether it opened; MenuHandler.tryOpen replaces the copied guards (#1221)
  • 🐛 Fix fix(menu): a biome picker older than /fp reload says so when its pick is withdrawn (#1225)
  • test(build): drive the biome picker end to end; tidy its leftovers (#1223, #1227)
  • 🐛 Fix fix(duel): replay browser reads map/order from the DB; map "delete replays" purges archived duel runs; shared spectate teardown (#1235, #1240, #1260, #1245)
  • 🐛 Fix fix(shop)/feat(cosmetics): charge only the shown price after /fp reload; tags re-read limits; earned-only cosmetics (#1258, #1257, #1217, #1216, #990)
  • 🐛 Fix fix(menu): missing or broken menus.yml sections use the jar's; menus checked once at load; one bundled-file cache and one warn-once hook (#1255, #1243, #1228, #1218, #1248)
  • 🐛 Fix fix(play/newcomer): dismounting a minecart keeps the run; browse picks while spectating start; starter playlist skips a bad map (#1252, #1241, #1259, #1231)
  • 🐛 Fix fix(menu): every menu form refuses a dead session; leaving build mode answers the form on screen (#1234, #1237, #1244, #1249, #1254)
  • 🐛 Fix fix(menu): chest clicks handled a tick after InventoryClickEvent; paginated load failures, empty server pages, placement policy, rowSlots, Replacer race (#1247, #1251, #1250, #1256, #1246, #1253)

Advanced Achievements

  • Merge upstream 12.0 and keep the public API for FoxKingdoms

Grief Prevention

  • 🐛 Fix fix: claim-command UX - overdrawn shrink, abandon prompts, resize detail, paged /claimslist (#459, #460, #465, #466, #468, #470, #477, #494, #495, #496)
  • 🐛 Fix test: fix two intermittent test failures (IgnoreLoaderThread mock race, weakly-held mock worlds)
  • 🐛 Fix fix: claim protection vs copper golems, raids, bone-mealed trees, brushing and arrow buttons (#458, #473, #474, #475, #476)
  • 🐛 Fix fix: grant-only trust inherits and honours public; stick and denial-hint fixes (#461, #462, #481, #482, #492)
  • 🐛 Fix fix: save the name directory, index giant claims per cell, trim hot-path costs (#455, #464, #478, #479, #484, #485, #486, #487, #488)
  • 🐛 Fix fix: marketplace offer integrity, plot-sale keep-out, post-settlement transfer event and /giveclaim (#454, #463, #472, #483)
  • 🐛 Fix fix: trust names, keywords, all-claims confirm and trust-menu follow-ups (#456, #457, #467, #469, #471, #480, #489, #490, #491, #493)

Teams

  • 🐛 Fix fix(users): run player-record continuations on the player's thread
  • 🐛 Fix fix(chat): bump MineDown to 1.7.6 so messages parse on Adventure 5
  • 🐛 Fix fix(members): resolve targets from the team roster; rank-check kicks
  • 🐛 Fix fix(gui): confirm destructive GUI actions and ask for the team name
  • 🐛 Fix fix(teleport): GUI + cross-server home/warp routing, warmup cooldown
  • 🐛 Fix fix(sync): harden broker messaging and pin connection-bound settings
  • 🐛 Fix fix(hooks): correct PAPI values and LP team-name; index team names
  • 🐛 Fix fix(invites): invite lifecycle, /team accept, join fees, owner limits
  • 🐛 Fix fix(economy): create fee gate, shutdown-safe payouts, money format, bank
  • feat(naming): word filter, normalised name checks, rename fee+cooldown
  • 🐛 Fix fix(teams): guard disband, drop stale chat toggles, check /tc mutes
  • 🐛 Fix fix(team-list): page lazily, add search, stop the head lookup 429 storm
  • 🐛 Fix fix(combat): block potion friendly fire, add ally accept, fix teamview
  • 🐛 Fix fix(messages): MineDown-escape player text, literal names, &#RRGGBB
  • 🐛 Fix fix(storage): flush only changed teams, queue kill deltas, guard replays
  • feat(commands): generated /team help, forgiving input, no @Values dumps
  • 🐛 Fix fix(echest): replay chest saves, close revoked views, tidy backups
  • 🐛 Fix feat(admin): inactive-team cleanup; fix /ta team, API checks, last_login
  • ✨ New feat(teams): add join requests, /team who, stats, roles, chat toggle
  • feat(gui): Floodgate forms for Bedrock players in the team menus
  • 🐛 Fix fix(storage): report failed deletes, retry loads, evict missing rows
  • 🐛 Fix fix(messages): correct default texts and misleading command replies
  • 🐛 Fix fix(teams): save setting changes by CAS, tell members, add API events

Wild TP

  • Perf/26.3 rtp search
  • Landing safety: judge feet/head by collision, not "is air" (#89)
  • Never overwrite an unparseable config.yml; back up before updates (#123)
  • FoxKingdoms hook reads the in-memory claim registry; drop Towny (#94, #95)
  • Round 4 (1/7): LF line endings, one Java 21 jar for all servers, commit-stamped version, tests + CI (#120 #121 #122)
  • Round 4 (2/7): portals fire on the block entered, portal use permission, safe Portals.yml, portals in unloaded worlds (#98 #101 #102 #103)
  • Round 4 (3/7): one teleport pipeline for every entry point; economy, /wild <player>, outcome stats (#78 #79 #80 #81 #82 #83 #99 #107 #110 #112 #114 #119 #126 #127 #128)
  • 🚫 Removed Round 4 (4/7): config and lifecycle safety: unknown-key warnings, no-region warning, safe config updates, debug interceptor, disable cleanup (#115 #117 #118, parts of #125 #133)
  • Round 4 (5/7): messages: lang file migration, complete translations, MiniMessage/hex, player help, Bedrock form info, sign/icon checks (#104 #105 #106 #108 #109 #111 #113 #116)
  • Round 4 (6/7): claim hooks: area queries, one guarded filter per hook, FactionsUUID 4, uncovered-plugin warning (#96 #97 #100)
  • Round 4 (7/7): location generation and biome index: packed index, world border, landing biome, world lifecycle, ceilings, validation (#84 #85 #86 #87 #88 #90 #91 #92 #93 #125 #133)
  • Follow-ups (1/6): portals: list malformed entries, riders trigger portals, reload keeps unsaved portals (#145 #149)
  • Follow-ups (2/6): teleport pipeline: dead or leaving targets, refusal hints, teleport errors, clearer /wild replies (#148 #149)
  • Follow-ups (3/6): messages: prefix colour carries over, blanked lines send nothing, lang migration edge cases (#148 #149)
  • Follow-ups (4/6): claim hooks: Residence 5.0.2.1+ per-chunk lookup, FabledKingdoms empty lands, KingdomsX verified, "try again later" when checks go unanswered (#144 #149)
  • ✨ New Follow-ups (5/6): lifecycle: one safe file writer (fsync, own temp file, permissions, dangling links), interceptor restore, clean refusal of a same-instance re-enable (#148 #149)
  • Follow-ups (6/6): biome index: /wtp reindex, coarse index for huge regions, configurable border margin, moving border, hyphenated datapack biomes (#141 #142 #143 #148 #149)

Stay up to date

Every change to the servers shows up here once it is live.