Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Official open free ELO platform with advanced battle system. Includes Sword PvP, Crystal PvP, Sumo and much more
1.0.2
Shadow48402 released PvPIndex-Battles version 1.0.2 on May 7, 2026
Added
- Lobby mode: Paper servers can now connect directly to Redis for real-time global sync (
lobby.enabled: true). - Global Player List: real-time player visibility across all lobbies via Redis pub/sub (replaces periodic proxy dumps).
- Global Challenges: lobby-to-lobby challenge routing via Redis. 2-hop flow replaces the old 4-hop proxy-mediated routing.
- Global Presence: real-time online/offline/in-battle/in-queue status across all regions via
PRESENCE_UPDATEmessages. - Global Invites: invite any player from any server with
INVITE_SEND/INVITE_ACCEPT/INVITE_DECLINEmessages. - Global Parties: create, join, and manage parties across all servers with Redis-synced state. Party-aware matchmaking. Commands:
/party create,/party invite,/party join,/party leave,/party kick,/party disband. - Global Routing: smart region selection for cross-region battles (
ROUTE_REQUEST/ROUTE_RESPONSE). Strategies: nearest, lowest latency, least loaded, shared server. - Optional Database Layer: persistent storage for stats, match history, ELO ratings, and player profiles.
- MySQL/MariaDB support with HikariCP connection pooling.
- SQLite support for single-server or development setups.
- MongoDB support for complex data (stub; requires driver on classpath).
- Configurable via
database.*section in config.yml.
- New Maven module:
pvpindex-databasewithDatabaseProviderinterface, repository abstractions, and implementations. NetworkNodeclass withNodeTypeenum (PROXY,LOBBY,BACKEND) generalising the network module.LobbyNetworkServiceorchestrates all Redis-based services on lobby Paper servers.PlayerSyncService,ChallengeSyncService,PresenceService,InviteService,PartySyncService,RoutingService,TransferRequesterin platform-papernetworkpackage.DataServicein platform-paperdatapackage for database lifecycle management.TransferRequester: lobbies request player transfers from proxy via RedisTRANSFER_REQUEST.TRANSFER_REQUESThandler on Velocity and BungeeCord proxies. Executes player transfers requested by lobbies.- New
NetworkMessageTypeentries:PRESENCE_UPDATE,INVITE_SEND/ACCEPT/DECLINE,PARTY_CREATE/JOIN/LEAVE/DISBAND/INVITE/KICK/UPDATE/CHAT,ROUTE_REQUEST/RESPONSE. NetworkPlayerCachenow supports incremental updates (addPlayer,removePlayer,updateServer) alongside bulk updates.LobbySettingsandDatabaseSettingsconfig records.- New config sections:
lobby.*(Redis connectivity for lobby servers) anddatabase.*(optional persistence). - New docs:
SETUP-LOBBY.md,SETUP-DATABASE.md,GLOBAL-FEATURES.md,SCALING.md.
Changed
- Architecture: lobbies now handle all global features via Redis instead of routing through proxies. Proxies are simplified to authentication, routing, and player transfers.
- Network module generalised:
ProxyNode→NetworkNodewithNodeTypeenum.ProxyNodekept as deprecated subclass. NetworkRouterinterface: addedregisterLocalNode(),getNode(),allNodes(),onlineNodes(),sendToNode(). Old proxy-specific methods deprecated.DefaultNetworkRouter: refactored to useNetworkNodeinternally; backward-compatible withProxyNodeusage.ChallengeManager: addedsetLobbyServices()for Redis-direct challenge routing. Supports three modes: lobby (Redis), proxy (plugin messaging), standalone (local).- Velocity
ProxyMessageHandler: stripped all challenge routing logic. Now handles battle lifecycle, heartbeats, andTRANSFER_REQUESTonly. Legacy challenge forwarding kept for backward compat. - BungeeCord
BungeeProxyMessageHandler: same simplification as Velocity. PvPIndexBattlesPlugin: added initialisation forLobbyNetworkServiceandDataService.- Plugin messaging reliability: lobbies no longer depend on proxy for challenge delivery (no dropped messages when no players online).
- Challenge flow reduced from 4 hops (Paper→Proxy→Redis→Proxy→Paper) to 2 hops (Lobby→Redis→Lobby).
Fixed
- Challenge "Player not found" after restart: lobby servers ignored proxy player list updates after restarting, leaving the network player cache empty for remote players.
NetworkPlayerCachenow merges incoming updates so remote players are visible within seconds of a restart. - Cross-proxy challenge lookup: challenges between players on different proxies (e.g. US to EU) failed with "Player not found" because the proxy only checked its own player list. Velocity and BungeeCord proxies now fall back to the Redis player registry for cross-proxy lookups.
- Dead player teleport failure: after a battle, defeated players who were still dead could not be teleported, silently stranding them in deleted arena worlds.
PlayerStateSnapshotnow force-respawns dead players before attempting the teleport. - Cross-server return after battle: players transferred to another server for a battle were not returned to their original server afterwards. Proxies now track each player's origin server before transfer and automatically return them when the battle ends.
- SMP loot phase cleanup on winner disconnect: if the winner disconnected during the SMP loot phase, the loser was left stranded with no boss bar and no timer. The plugin now ends the loot phase cleanly, restoring the loser and cancelling all timers.
- Challenge accepted notification not delivered: accepting or declining a challenge from a backend server through a lobby produced no response on the challenger's side. Fixed routing of
CHALLENGE_ACCEPTandCHALLENGE_DECLINEmessages between Redis and plugin messaging on both Velocity and BungeeCord proxies. - TeleHop arena conflict: TeleHop's random respawn feature interfered with PvPIndex arena death handling by teleporting dead players before the plugin could process them. Added
excluded-worldssupport to TeleHop to skip arena worlds.
Deprecated
ProxyNodeclass. UseNetworkNodewithNodeType.PROXYinstead.NetworkRouter.registerLocalProxy(). UseregisterLocalNode().NetworkRouter.getProxy(),allProxies(),onlineProxies(). Use node-generic equivalents.- Proxy-based challenge routing (kept as fallback for standalone/SMP servers without Redis).
- Periodic
NETWORK_PLAYER_LISTbroadcast from proxy (kept as fallback for non-lobby backends).
Removed
PendingChallengefromplatform-velocity(challenge state no longer lives on proxy).BungeePendingChallengefromplatform-bungeecord.- Cross-proxy challenge routing logic from both proxy message handlers.
Information
| Published on | May 7, 2026 |
|---|---|
| Downloads | 1 |
Platforms
Paper (1.21-26.1.2)
Waterfall (1.21)
Velocity (3.0-3.5)