Skip to main content

Mixed

Mixed is a public website for your PGM (minigame-style) servers - think capture-the-flag, skywars, and similar rotating-map game modes. A companion server plugin called zander-pgm sends match results and live game data to your website as they happen, and Mixed turns that into a full stats site for your players: a live "what's happening right now" dashboard, match history, a browsable list of maps (kept in sync automatically from your map files on GitHub), player profiles, leaderboards, achievements, in-game map voting, after-match map ratings, and a store where players spend Map Tokens to nominate, boost, or sponsor maps they want to see played.

note

📸 Screenshot: The Mixed live match dashboard showing an in-progress match with player stats

Mixed is just for stats, maps, voting, and player engagement - it doesn't handle moderation, punishments, bans, or chat tags. Those are managed elsewhere in Zander.


Public Pages​

PageWhat It Shows
/mixedLanding/overview
/mixed/liveLive match dashboard (real-time via Server-Sent Events)
/mixed/matchesMatch history and match detail
/mixed/mapsMap browser and map detail - ratings, feedback, win-rates, vote/token history
/mixed/playersPlayer browser and profiles
/mixed/leaderboardsLeaderboards by category
/mixed/achievementsAchievement list
/mixed/serversLive PGM server status
/mixed/voteCurrent map vote
/mixed/map-tokens, /mixed/storeMap Token balance/history and the Stripe-powered token store
tip

/mixed/servers is not the same as the site-wide Servers directory - this page shows live PGM match-server status, while Servers is a static list of connect addresses for /play.

Any player who has linked their Minecraft account can vote for the next map from the website (if you've turned on web voting), leave one rating per match with optional feedback after playing, and earn or spend Map Tokens in the store. When a player spends a token to nominate, queue up, or sponsor a map, that request is carried out on the actual server by the plugin - and if it doesn't go through for any reason, the player automatically gets their token back.


For Staff​

Dashboard root: /dashboard/mixed, gated behind the zander.web.mixed permission node.

note

📸 Screenshot: The Mixed admin dashboard overview with map-sync status and recent match activity

From the admin section, staff can:

  • Edit map metadata/overrides and upload thumbnails
  • Start, end, or cancel votes, and tune duration, cost, and cooldown
  • Review, hide, delete, or reset map ratings and feedback
  • Grant or remove Map Tokens, and refund or cancel pending requests
  • Trigger or inspect map-repository syncs, including per-source runs and error detail
  • Manage rank sync and entitlements

You don't need to enter map details by hand - Zander automatically pulls map information from your configured GitHub repositories once an hour, and you can also trigger a sync manually whenever you want.


Architecture Notes​

This section is technical background for developers, not something admins need to configure. Mixed is built the same way as other Zander modules: a data layer, public web pages, an admin dashboard section, and a set of behind-the-scenes data endpoints. What's unique to Mixed is how it receives data - the zander-pgm plugin sends match info to your website using the same site-wide API key every other server plugin uses (there's no separate key just for Mixed, and it's never visible to players in their browser). Match events (server status, match start/end, kills, objectives, votes, ratings, and map requests) get saved and instantly pushed out to live-update the /mixed/live and /mixed/vote pages as they happen.

Map Token purchases and Supporter perks go through the same Stripe payment processing used elsewhere on the site, built so that a payment notification that gets delivered twice by accident can never grant a player double tokens.

tip

Mixed's rank-sync feature writes into the same LuckPerms tables covered in Permissions - see that page for the LuckPerms side of rank management.


Feature Toggle​

"mixed": true

Disabling features.mixed (setting it to false) gates the entire public section, the dashboard section, and the ingestion/public API.