forked from GeyserMC/Geyser
Cleanup adding/removing players
This commit is contained in:
parent
295d8d5256
commit
ba21acc9c8
4 changed files with 42 additions and 34 deletions
|
@ -29,6 +29,7 @@ import org.geysermc.api.command.CommandMap;
|
||||||
import org.geysermc.api.logger.Logger;
|
import org.geysermc.api.logger.Logger;
|
||||||
import org.geysermc.api.plugin.PluginManager;
|
import org.geysermc.api.plugin.PluginManager;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
|
||||||
public interface Connector {
|
public interface Connector {
|
||||||
|
@ -61,6 +62,13 @@ public interface Connector {
|
||||||
*/
|
*/
|
||||||
ScheduledExecutorService getGeneralThreadPool();
|
ScheduledExecutorService getGeneralThreadPool();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a collection of the connected players
|
||||||
|
*
|
||||||
|
* @return a collection of the connected players
|
||||||
|
*/
|
||||||
|
Collection<Player> getConnectedPlayers();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shuts down the connector
|
* Shuts down the connector
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -29,6 +29,7 @@ import org.geysermc.api.command.CommandMap;
|
||||||
import org.geysermc.api.logger.Logger;
|
import org.geysermc.api.logger.Logger;
|
||||||
import org.geysermc.api.plugin.PluginManager;
|
import org.geysermc.api.plugin.PluginManager;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
@ -36,8 +37,6 @@ import java.util.UUID;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
|
||||||
public class Geyser {
|
public class Geyser {
|
||||||
private static final Map<Object, Player> players = new HashMap<>();
|
|
||||||
|
|
||||||
|
|
||||||
private static Connector connector;
|
private static Connector connector;
|
||||||
|
|
||||||
|
@ -94,23 +93,15 @@ public class Geyser {
|
||||||
* @return the amount of online players
|
* @return the amount of online players
|
||||||
*/
|
*/
|
||||||
public static int getPlayerCount() {
|
public static int getPlayerCount() {
|
||||||
return players.size();
|
return connector.getConnectedPlayers().size();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a player
|
* Returns a collection of the connected players
|
||||||
* @param p The player to add
|
*
|
||||||
|
* @return a collection of the connected players
|
||||||
*/
|
*/
|
||||||
public static void addPlayer(Player p) {
|
public static Collection<Player> getConnectedPlayers() {
|
||||||
players.put(Objects.requireNonNull(Objects.requireNonNull(Objects.requireNonNull(p, "player").getAuthenticationData(), "authData").getUUID(), "player uuid"), p);
|
return connector.getConnectedPlayers();
|
||||||
players.put(Objects.requireNonNull(Objects.requireNonNull(Objects.requireNonNull(p, "player").getAuthenticationData(), "authData").getName(), "player name"), p);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Disconnect a player
|
|
||||||
* @param p The player to remove/disconnect
|
|
||||||
*/
|
|
||||||
public static void removePlayer(Player p) {
|
|
||||||
players.remove(Objects.requireNonNull(Objects.requireNonNull(Objects.requireNonNull(p, "player").getAuthenticationData(), "authData").getName(), "player name"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,10 +29,10 @@ import com.nukkitx.protocol.bedrock.BedrockPacketCodec;
|
||||||
import com.nukkitx.protocol.bedrock.BedrockServer;
|
import com.nukkitx.protocol.bedrock.BedrockServer;
|
||||||
import com.nukkitx.protocol.bedrock.v361.Bedrock_v361;
|
import com.nukkitx.protocol.bedrock.v361.Bedrock_v361;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.fusesource.jansi.AnsiConsole;
|
import org.fusesource.jansi.AnsiConsole;
|
||||||
import org.geysermc.api.Connector;
|
import org.geysermc.api.Connector;
|
||||||
import org.geysermc.api.Geyser;
|
import org.geysermc.api.Geyser;
|
||||||
|
import org.geysermc.api.Player;
|
||||||
import org.geysermc.api.command.CommandMap;
|
import org.geysermc.api.command.CommandMap;
|
||||||
import org.geysermc.api.logger.Logger;
|
import org.geysermc.api.logger.Logger;
|
||||||
import org.geysermc.api.plugin.Plugin;
|
import org.geysermc.api.plugin.Plugin;
|
||||||
|
@ -43,6 +43,7 @@ import org.geysermc.connector.console.GeyserLogger;
|
||||||
import org.geysermc.connector.metrics.Metrics;
|
import org.geysermc.connector.metrics.Metrics;
|
||||||
import org.geysermc.connector.network.ConnectorServerEventHandler;
|
import org.geysermc.connector.network.ConnectorServerEventHandler;
|
||||||
import org.geysermc.connector.network.remote.RemoteJavaServer;
|
import org.geysermc.connector.network.remote.RemoteJavaServer;
|
||||||
|
import org.geysermc.connector.network.session.GeyserSession;
|
||||||
import org.geysermc.connector.network.translators.TranslatorsInit;
|
import org.geysermc.connector.network.translators.TranslatorsInit;
|
||||||
import org.geysermc.connector.plugin.GeyserPluginLoader;
|
import org.geysermc.connector.plugin.GeyserPluginLoader;
|
||||||
import org.geysermc.connector.plugin.GeyserPluginManager;
|
import org.geysermc.connector.plugin.GeyserPluginManager;
|
||||||
|
@ -53,12 +54,16 @@ import org.geysermc.connector.utils.Toolbox;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
@Getter
|
||||||
public class GeyserConnector implements Connector {
|
public class GeyserConnector implements Connector {
|
||||||
|
|
||||||
public static final BedrockPacketCodec BEDROCK_PACKET_CODEC = Bedrock_v361.V361_CODEC;
|
public static final BedrockPacketCodec BEDROCK_PACKET_CODEC = Bedrock_v361.V361_CODEC;
|
||||||
|
@ -66,34 +71,25 @@ public class GeyserConnector implements Connector {
|
||||||
private static final String NAME = "Geyser";
|
private static final String NAME = "Geyser";
|
||||||
private static final String VERSION = "1.0-SNAPSHOT";
|
private static final String VERSION = "1.0-SNAPSHOT";
|
||||||
|
|
||||||
|
private final Map<Object, Player> players = new HashMap<>();
|
||||||
|
|
||||||
private static GeyserConnector instance;
|
private static GeyserConnector instance;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private RemoteJavaServer remoteServer;
|
private RemoteJavaServer remoteServer;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private Logger logger;
|
private Logger logger;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private CommandMap commandMap;
|
private CommandMap commandMap;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private GeyserConfiguration config;
|
private GeyserConfiguration config;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private GeyserPluginManager pluginManager;
|
private GeyserPluginManager pluginManager;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private boolean shuttingDown = false;
|
private boolean shuttingDown = false;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private final ScheduledExecutorService generalThreadPool;
|
private final ScheduledExecutorService generalThreadPool;
|
||||||
|
|
||||||
@Getter
|
|
||||||
private PingPassthroughThread passthroughThread;
|
private PingPassthroughThread passthroughThread;
|
||||||
|
|
||||||
@Getter
|
private Metrics metrics;
|
||||||
private Metrics METRICS;
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
instance = new GeyserConnector();
|
instance = new GeyserConnector();
|
||||||
|
@ -127,9 +123,9 @@ public class GeyserConnector implements Connector {
|
||||||
shutdown();
|
shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
METRICS = new Metrics("GeyserMC", instance.getConfig().getUUID(), true, java.util.logging.Logger.getLogger(""));
|
metrics = new Metrics("GeyserMC", instance.getConfig().getUUID(), true, java.util.logging.Logger.getLogger(""));
|
||||||
|
|
||||||
addMetrics(METRICS);
|
addMetrics(metrics);
|
||||||
|
|
||||||
logger.setDebug(config.isDebugMode());
|
logger.setDebug(config.isDebugMode());
|
||||||
|
|
||||||
|
@ -161,6 +157,10 @@ public class GeyserConnector implements Connector {
|
||||||
}).join();
|
}).join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Collection<Player> getConnectedPlayers() {
|
||||||
|
return players.values();
|
||||||
|
}
|
||||||
|
|
||||||
public void shutdown() {
|
public void shutdown() {
|
||||||
logger.info("Shutting down connector.");
|
logger.info("Shutting down connector.");
|
||||||
for (Plugin plugin : pluginManager.getPlugins()) {
|
for (Plugin plugin : pluginManager.getPlugins()) {
|
||||||
|
@ -174,9 +174,18 @@ public class GeyserConnector implements Connector {
|
||||||
System.exit(0);
|
System.exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addPlayer(Player player) {
|
||||||
|
players.put(player.getAuthenticationData().getName(), player);
|
||||||
|
players.put(player.getAuthenticationData().getUUID(), player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removePlayer(Player player) {
|
||||||
|
players.remove(player.getAuthenticationData().getName());
|
||||||
|
players.remove(player.getAuthenticationData().getUUID());
|
||||||
|
}
|
||||||
|
|
||||||
private static void addMetrics(Metrics m) {
|
private static void addMetrics(Metrics m) {
|
||||||
m.addCustomChart(new Metrics.SingleLineChart("servers", () -> 3 + new Random().nextInt(4)));
|
m.addCustomChart(new Metrics.SingleLineChart("servers", () -> 3 + new Random().nextInt(4)));
|
||||||
|
|
||||||
m.addCustomChart(new Metrics.SingleLineChart("players", () -> 5 + new Random().nextInt(7)));
|
m.addCustomChart(new Metrics.SingleLineChart("players", () -> 5 + new Random().nextInt(7)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,7 +127,7 @@ public class GeyserSession implements PlayerSession, Player {
|
||||||
|
|
||||||
public void authenticate(String username) {
|
public void authenticate(String username) {
|
||||||
authenticate(username, "");
|
authenticate(username, "");
|
||||||
Geyser.addPlayer(this);
|
connector.addPlayer(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void authenticate(String username, String password) {
|
public void authenticate(String username, String password) {
|
||||||
|
@ -206,7 +206,7 @@ public class GeyserSession implements PlayerSession, Player {
|
||||||
@Override
|
@Override
|
||||||
public void onDisconnect(String reason) {
|
public void onDisconnect(String reason) {
|
||||||
downstream.getSession().disconnect("Disconnected from server. Reason: " + reason);
|
downstream.getSession().disconnect("Disconnected from server. Reason: " + reason);
|
||||||
Geyser.removePlayer(this);
|
connector.removePlayer(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAuthenticationData(AuthData authData) {
|
public void setAuthenticationData(AuthData authData) {
|
||||||
|
|
Loading…
Reference in a new issue