MultiProxySync is a Velocity plugin for distributed proxy networks.
It uses Redis to synchronize player counts and player lists across multiple Velocity proxies, so your network can present a consistent global player count and shared player data across all entry points.
-
Global synchronization
Synchronizes player counts and player lists across multiple Velocity proxies. -
Accurate player statistics
Keeps the displayed online count consistent across the network. -
Self-healing cleanup
Removes stale proxy data automatically when a node crashes or goes offline unexpectedly. -
Redis-powered
Uses Redis for fast and lightweight shared state synchronization. -
Public API
Exposes synchronized proxy and player data for use in other plugins. -
Maven Central distribution
The API can be added through Maven Central without manually installing local JAR files.
- Velocity proxy server
- Redis database
- Make sure a Redis server is available.
- Download
multiproxysync-plugin-2.0.0.jar. - Place it in the
pluginsfolder of all Velocity proxy instances. - Start each proxy once to generate the configuration file.
- Edit the generated
config.yml. - Restart all proxy instances.
plugin:
serverName: Proxy-01
enabled: true
redis:
host: 127.0.0.1
port: 6379
password: YourPasswordserverNamemust be unique for each proxy node.enabledcontrols whether the plugin initializes and registers its API.- All proxy nodes should connect to the same Redis instance.
Click to expand
<dependency>
<groupId>top.time-blog</groupId>
<artifactId>multiproxysync-api</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
</dependency>dependencies {
compileOnly("top.time-blog:multiproxysync-api:2.0.0")
}Set<String> getProxies();
Set<String> getAllPlayers();
Map<String, Set<String>> getPlayersByProxy();
int getAllPlayerCount();
Map<String, Integer> getPlayerCountByProxy();import top.timeblog.multiproxysync.api.MultiProxySyncAPI;
import top.timeblog.multiproxysync.api.MultiProxySyncProvider;
MultiProxySyncAPI api = MultiProxySyncProvider.getOrNull();
if (api == null) {
System.out.println("MultiProxySync API is not available yet.");
return;
}
int totalPlayers = api.getAllPlayerCount();
Set<String> allPlayers = api.getAllPlayers();
Map<String, Integer> countByProxy = api.getPlayerCountByProxy();
Map<String, Set<String>> playersByProxy = api.getPlayersByProxy();
System.out.println("Total players: " + totalPlayers);
System.out.println("All players: " + allPlayers);
System.out.println("Count by proxy: " + countByProxy);
System.out.println("Players by proxy: " + playersByProxy);- The API is read-only.
- Redis connection management remains internal to MultiProxySync.
- Returned player identifiers are UUID strings.
- The API becomes available after plugin initialization has completed.
If you encounter any issues or have ideas for improvements, feel free to open an issue:
👉 https://github.com/User-Time/MultiProxySync/issues
This project is licensed under the Apache License 2.0.
