mirror of
https://github.com/CivMC/Civ.git
synced 2026-07-18 00:20:44 +00:00
update
This commit is contained in:
@@ -6,6 +6,7 @@ import com.velocitypowered.api.event.connection.DisconnectEvent;
|
||||
import com.velocitypowered.api.event.player.KickedFromServerEvent;
|
||||
import com.velocitypowered.api.event.player.ServerPostConnectEvent;
|
||||
import com.velocitypowered.api.event.player.ServerPreConnectEvent;
|
||||
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
||||
import com.velocitypowered.api.plugin.Dependency;
|
||||
import com.velocitypowered.api.plugin.Plugin;
|
||||
import com.velocitypowered.api.proxy.Player;
|
||||
@@ -13,12 +14,10 @@ import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.proxy.ServerConnection;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
import java.time.Instant;
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import net.luckperms.api.LuckPermsProvider;
|
||||
import net.luckperms.api.model.data.TemporaryNodeMergeStrategy;
|
||||
import net.luckperms.api.model.user.UserManager;
|
||||
@@ -46,6 +45,15 @@ public class CivProxyPlugin {
|
||||
|
||||
}
|
||||
|
||||
public Logger getLogger() {
|
||||
return logger;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onProxyInitialization(ProxyInitializeEvent event) {
|
||||
new PlayerCount(this, server).start();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onToMain(KickedFromServerEvent event) {
|
||||
// Other than banned players, kicked servers should go to the queue on the PvP server
|
||||
@@ -95,7 +103,7 @@ public class CivProxyPlugin {
|
||||
// if (mini != null && mini.getPlayersConnected().size() < 110) {
|
||||
// event.setResult(ServerPreConnectEvent.ServerResult.allowed(server.getServer("mini").get()));
|
||||
// } else {
|
||||
event.setResult(ServerPreConnectEvent.ServerResult.allowed(server.getServer("pvp").get()));
|
||||
event.setResult(ServerPreConnectEvent.ServerResult.allowed(server.getServer("pvp").get()));
|
||||
// }
|
||||
|
||||
players.put(event.getPlayer(), new QueueRecord(Instant.now(), name));
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
package net.civmc.civproxy;
|
||||
|
||||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.proxy.messages.MinecraftChannelIdentifier;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
import java.time.Duration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class PlayerCount {
|
||||
|
||||
private static final MinecraftChannelIdentifier PLAYER_COUNT_ID = MinecraftChannelIdentifier.create("civproxy", "player_count");
|
||||
|
||||
private final CivProxyPlugin plugin;
|
||||
private final ProxyServer server;
|
||||
|
||||
public PlayerCount(CivProxyPlugin plugin, ProxyServer server) {
|
||||
this.plugin = plugin;
|
||||
this.server = server;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
server.getEventManager().register(plugin, this);
|
||||
server.getScheduler().buildTask(plugin, () -> {
|
||||
try {
|
||||
Map<String, Integer> count = new HashMap<>();
|
||||
for (RegisteredServer server : server.getAllServers()) {
|
||||
count.put(server.getServerInfo().getName(), server.getPlayersConnected().size());
|
||||
}
|
||||
|
||||
for (RegisteredServer server : server.getAllServers()) {
|
||||
server.sendPluginMessage(PLAYER_COUNT_ID, out -> {
|
||||
out.writeInt(count.size() - 1);
|
||||
for (Map.Entry<String, Integer> entry : count.entrySet()) {
|
||||
if (!entry.getKey().equals(server.getServerInfo().getName())) {
|
||||
out.writeUTF(entry.getKey());
|
||||
out.writeInt(entry.getValue());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (RuntimeException ex) {
|
||||
plugin.getLogger().warn("Ticking player counts", ex);
|
||||
}
|
||||
}).delay(Duration.ZERO).repeat(Duration.ofSeconds(2)).schedule();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user