Commit Graph
7 Commits
  • Fix gamerule toggles for 26.x renames; add map/skins/pregen + admin favors
    Minecraft 26.x renamed every gamerule to snake_case (keepInventory →
    keep_inventory, doDaylightCycle → advance_time, ...), so the panel's
    queries hit unknown rules: reads returned nothing, toggles always
    started from 'off', and sets silently failed. Rules are now defined by
    candidate names resolved against the live server (works on old and new
    versions), sets are verified by re-query, and failures surface the
    server's actual reply. Toggles render only for rules the server reports.
    
    Creative additions:
    - Featured mods on the Mods page: BlueMap (3D web map), SkinRestorer
      (real skins in offline mode), Chunky (pregen) — verified for 26.2
    - BlueMap plumbing: MAP_PORT mapping in compose, in-network detection,
      'Open the live world map' link on the Overview
    - Player modal favors: heal, teleport-to-player, give item
    - Broadcast box gained a full-screen title mode
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
  • Security page, admin quick controls, and whitelist reload self-healing
    - RCON client retries once on a fresh connection after stale-socket
      timeouts (panel idle overnight held dead sockets, so 'whitelist
      reload' silently failed and approvals needed a server restart)
    - Auth watcher verifies pending players against the LIVE whitelist every
      5s and re-writes/reloads if the server missed it, refunding lost
      window time
    - Log watcher records blocked join attempts (name + IP) with rate-
      limited notifications — scanner bots are now visible in the panel
    - New Security page: blocked-attempt log with one-click IP ban, banned
      players/IPs management, kick-everyone lockdown
    - Player detail modal: ban, op/deop, gamemode switching
    - Overview quick controls: time/weather/difficulty, gamerule toggles
      (keepInventory, mobGriefing, PvP...), broadcast box
    - Settings toggles for blocked-attempt notifications (panel + Discord)
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
  • Fix blank TPS: read tick timing from vanilla 'tick query' instead of spark
    spark sends command output asynchronously, so its RCON responses are
    empty and the sampler recorded null TPS/MSPT. Use the synchronous
    vanilla 'tick query' as the primary source (treating paused/frozen idle
    servers as healthy), keep spark as fallback, and route spark ping /
    healthreport through the server console (mc-send-to-console) with the
    log watcher capturing ping lines. Lag endpoint now falls back to the
    freshest recorded ping sample.
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
  • Minecraft 26.2 Fabric server stack with CraftDeck management panel
    - docker-compose: itzg/minecraft-server (Fabric, offline mode, whitelist
      enforced, Modrinth-managed mods), itzg/mc-backup sidecar, custom dashboard
    - Gated auth for offline mode: approve username -> whitelisted with a short
      registration window -> EasyAuth /register + /login; auto-revoke on expiry
    - CraftDeck panel (Next.js 16, zero native deps): live console (SSE), players
      & stats, lag diagnostics (server TPS vs player ping via spark), performance
      graphs, Modrinth mod search/manager, backups & restore, sandboxed file
      browser/editor, .env config editor with compose apply, cron schedules,
      Discord alerts, scrypt-hashed panel login
    - scripts/setup.sh generates secrets; docs/ covers auth, mods, updating,
      backups, networking (Tailscale), troubleshooting
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>