3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-10-03 16:51:04 +02:00

Make getPortedPlayers() private, update bungee-api, remove some lombok usage, create ViaConnectionManager

Dieser Commit ist enthalten in:
creeper123123321 2020-04-12 16:47:32 -03:00
Ursprung ca78bf9851
Commit a105c5cb11
12 geänderte Dateien mit 110 neuen und 177 gelöschten Zeilen

Datei anzeigen

@ -11,8 +11,8 @@ import us.myles.ViaVersion.api.ViaAPI;
import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.command.ViaCommandSender;
import us.myles.ViaVersion.api.configuration.ConfigurationProvider; import us.myles.ViaVersion.api.configuration.ConfigurationProvider;
import us.myles.ViaVersion.api.data.MappingDataLoader; import us.myles.ViaVersion.api.data.MappingDataLoader;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.platform.TaskId; import us.myles.ViaVersion.api.platform.TaskId;
import us.myles.ViaVersion.api.platform.ViaConnectionManager;
import us.myles.ViaVersion.api.platform.ViaPlatform; import us.myles.ViaVersion.api.platform.ViaPlatform;
import us.myles.ViaVersion.bukkit.classgenerator.ClassGenerator; import us.myles.ViaVersion.bukkit.classgenerator.ClassGenerator;
import us.myles.ViaVersion.bukkit.commands.BukkitCommandHandler; import us.myles.ViaVersion.bukkit.commands.BukkitCommandHandler;
@ -20,18 +20,13 @@ import us.myles.ViaVersion.bukkit.commands.BukkitCommandSender;
import us.myles.ViaVersion.bukkit.platform.*; import us.myles.ViaVersion.bukkit.platform.*;
import us.myles.ViaVersion.bukkit.util.NMSUtil; import us.myles.ViaVersion.bukkit.util.NMSUtil;
import us.myles.ViaVersion.dump.PluginInfo; import us.myles.ViaVersion.dump.PluginInfo;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import us.myles.ViaVersion.util.GsonUtil; import us.myles.ViaVersion.util.GsonUtil;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform<Player> { public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform<Player> {
private static ViaVersionPlugin instance; private static ViaVersionPlugin instance;
private final ViaConnectionManager connectionManager = new ViaConnectionManager();
private final Map<UUID, UserConnection> clients = new ConcurrentHashMap<>();
private final Set<UserConnection> connections = Collections.newSetFromMap(new ConcurrentHashMap<>());
private final BukkitCommandHandler commandHandler; private final BukkitCommandHandler commandHandler;
private final BukkitViaConfig conf; private final BukkitViaConfig conf;
private final ViaAPI<Player> api = new BukkitViaAPI(this); private final ViaAPI<Player> api = new BukkitViaAPI(this);
@ -285,33 +280,7 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform<Player>
} }
@Override @Override
public void onLoginSuccess(UserConnection connection) { public ViaConnectionManager getConnectionManager() {
Objects.requireNonNull(connection, "connection is null!"); return connectionManager;
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.add(connection);
clients.put(id, connection);
}
@Override
public void onDisconnect(UserConnection connection) {
Objects.requireNonNull(connection, "connection is null!");
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.remove(connection);
clients.remove(id);
}
@Override
public Map<UUID, UserConnection> getConnectedClients() {
return Collections.unmodifiableMap(clients);
}
@Override
public UserConnection getConnectedClient(UUID clientIdentifier) {
return clients.get(clientIdentifier);
}
@Override
public Set<UserConnection> getConnections() {
return Collections.unmodifiableSet(connections);
} }
} }

Datei anzeigen

@ -71,12 +71,12 @@ public class BukkitViaAPI implements ViaAPI<Player> {
} }
@Override @Override
public BossBar createBossBar(String title, BossColor color, BossStyle style) { public BossBar<Player> createBossBar(String title, BossColor color, BossStyle style) {
return new ViaBossBar(title, 1F, color, style); return new ViaBossBar(title, 1F, color, style);
} }
@Override @Override
public BossBar createBossBar(String title, float health, BossColor color, BossStyle style) { public BossBar<Player> createBossBar(String title, float health, BossColor color, BossStyle style) {
return new ViaBossBar(title, health, color, style); return new ViaBossBar(title, health, color, style);
} }
@ -107,7 +107,7 @@ public class BukkitViaAPI implements ViaAPI<Player> {
return plugin.isProtocolSupport(); return plugin.isProtocolSupport();
} }
public Map<UUID, UserConnection> getPortedPlayers() { private Map<UUID, UserConnection> getPortedPlayers() {
return Via.getManager().getConnectedClients(); return Via.getManager().getConnectedClients();
} }
} }

Datei anzeigen

@ -29,7 +29,7 @@
<dependency> <dependency>
<groupId>net.md-5</groupId> <groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId> <artifactId>bungeecord-api</artifactId>
<version>1.13-SNAPSHOT</version> <version>1.15-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>

Datei anzeigen

@ -2,6 +2,7 @@ package us.myles.ViaVersion;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.PlayerDisconnectEvent; import net.md_5.bungee.api.event.PlayerDisconnectEvent;
import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Listener;
@ -15,6 +16,7 @@ import us.myles.ViaVersion.api.configuration.ConfigurationProvider;
import us.myles.ViaVersion.api.data.MappingDataLoader; import us.myles.ViaVersion.api.data.MappingDataLoader;
import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.platform.TaskId; import us.myles.ViaVersion.api.platform.TaskId;
import us.myles.ViaVersion.api.platform.ViaConnectionManager;
import us.myles.ViaVersion.api.platform.ViaPlatform; import us.myles.ViaVersion.api.platform.ViaPlatform;
import us.myles.ViaVersion.bungee.commands.BungeeCommand; import us.myles.ViaVersion.bungee.commands.BungeeCommand;
import us.myles.ViaVersion.bungee.commands.BungeeCommandHandler; import us.myles.ViaVersion.bungee.commands.BungeeCommandHandler;
@ -22,19 +24,15 @@ import us.myles.ViaVersion.bungee.commands.BungeeCommandSender;
import us.myles.ViaVersion.bungee.platform.*; import us.myles.ViaVersion.bungee.platform.*;
import us.myles.ViaVersion.bungee.service.ProtocolDetectorService; import us.myles.ViaVersion.bungee.service.ProtocolDetectorService;
import us.myles.ViaVersion.dump.PluginInfo; import us.myles.ViaVersion.dump.PluginInfo;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import us.myles.ViaVersion.util.GsonUtil; import us.myles.ViaVersion.util.GsonUtil;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
public class BungeePlugin extends Plugin implements ViaPlatform, Listener { public class BungeePlugin extends Plugin implements ViaPlatform<ProxiedPlayer>, Listener {
private final Map<UUID, UserConnection> clients = new ConcurrentHashMap<>();
private final Set<UserConnection> connections = Collections.newSetFromMap(new ConcurrentHashMap<>());
private BungeeViaAPI api; private BungeeViaAPI api;
private BungeeViaConfig config; private BungeeViaConfig config;
private BungeeCommandHandler commandHandler; private final ViaConnectionManager connectionManager = new ViaConnectionManager();
@Override @Override
public void onLoad() { public void onLoad() {
@ -52,7 +50,7 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener {
api = new BungeeViaAPI(); api = new BungeeViaAPI();
config = new BungeeViaConfig(getDataFolder()); config = new BungeeViaConfig(getDataFolder());
commandHandler = new BungeeCommandHandler(); BungeeCommandHandler commandHandler = new BungeeCommandHandler();
ProxyServer.getInstance().getPluginManager().registerCommand(this, new BungeeCommand(commandHandler)); ProxyServer.getInstance().getPluginManager().registerCommand(this, new BungeeCommand(commandHandler));
// Init platform // Init platform
@ -130,13 +128,13 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener {
@Override @Override
public void sendMessage(UUID uuid, String message) { public void sendMessage(UUID uuid, String message) {
getProxy().getPlayer(uuid).sendMessage(message); getProxy().getPlayer(uuid).sendMessage(TextComponent.fromLegacyText(message));
} }
@Override @Override
public boolean kickPlayer(UUID uuid, String message) { public boolean kickPlayer(UUID uuid, String message) {
if (getProxy().getPlayer(uuid) != null) { if (getProxy().getPlayer(uuid) != null) {
getProxy().getPlayer(uuid).disconnect(message); getProxy().getPlayer(uuid).disconnect(TextComponent.fromLegacyText(message));
return true; return true;
} }
return false; return false;
@ -148,7 +146,7 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener {
} }
@Override @Override
public ViaAPI getApi() { public ViaAPI<ProxiedPlayer> getApi() {
return api; return api;
} }
@ -173,7 +171,13 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener {
List<PluginInfo> plugins = new ArrayList<>(); List<PluginInfo> plugins = new ArrayList<>();
for (Plugin p : ProxyServer.getInstance().getPluginManager().getPlugins()) for (Plugin p : ProxyServer.getInstance().getPluginManager().getPlugins())
plugins.add(new PluginInfo(true, p.getDescription().getName(), p.getDescription().getVersion(), p.getDescription().getMain(), Arrays.asList(p.getDescription().getAuthor()))); plugins.add(new PluginInfo(
true,
p.getDescription().getName(),
p.getDescription().getVersion(),
p.getDescription().getMain(),
Collections.singletonList(p.getDescription().getAuthor())
));
platformSpecific.add("plugins", GsonUtil.getGson().toJsonTree(plugins)); platformSpecific.add("plugins", GsonUtil.getGson().toJsonTree(plugins));
platformSpecific.add("servers", GsonUtil.getGson().toJsonTree(ProtocolDetectorService.getDetectedIds())); platformSpecific.add("servers", GsonUtil.getGson().toJsonTree(ProtocolDetectorService.getDetectedIds()));
@ -186,39 +190,13 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener {
} }
@Override @Override
public void onLoginSuccess(UserConnection connection) { public ViaConnectionManager getConnectionManager() {
Objects.requireNonNull(connection, "connection is null!"); return connectionManager;
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.add(connection);
clients.put(id, connection);
}
@Override
public void onDisconnect(UserConnection connection) {
Objects.requireNonNull(connection, "connection is null!");
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.remove(connection);
clients.remove(id);
}
@Override
public Map<UUID, UserConnection> getConnectedClients() {
return Collections.unmodifiableMap(clients);
}
@Override
public UserConnection getConnectedClient(UUID clientIdentifier) {
return clients.get(clientIdentifier);
}
@Override
public Set<UserConnection> getConnections() {
return Collections.unmodifiableSet(connections);
} }
@EventHandler @EventHandler
public void onQuit(PlayerDisconnectEvent e) { public void onQuit(PlayerDisconnectEvent e) {
UserConnection userConnection = getConnectedClient(e.getPlayer().getUniqueId()); UserConnection userConnection = getConnectionManager().getConnectedClient(e.getPlayer().getUniqueId());
if (userConnection != null) { if (userConnection != null) {
// Only remove if the connection is disconnected (eg. relogin) // Only remove if the connection is disconnected (eg. relogin)
if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) { if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) {

Datei anzeigen

@ -78,7 +78,7 @@ public class BungeeViaAPI implements ViaAPI<ProxiedPlayer> {
return outputSet; return outputSet;
} }
public Map<UUID, UserConnection> getPortedPlayers() { private Map<UUID, UserConnection> getPortedPlayers() {
return Via.getManager().getConnectedClients(); return Via.getManager().getConnectedClients();
} }

Datei anzeigen

@ -111,7 +111,7 @@ public class ViaManager {
} }
public Set<UserConnection> getConnections() { public Set<UserConnection> getConnections() {
return platform.getConnections(); return platform.getConnectionManager().getConnections();
} }
/** /**
@ -123,11 +123,11 @@ public class ViaManager {
} }
public Map<UUID, UserConnection> getConnectedClients() { public Map<UUID, UserConnection> getConnectedClients() {
return platform.getConnectedClients(); return platform.getConnectionManager().getConnectedClients();
} }
public void handleLoginSuccess(UserConnection info) { public void handleLoginSuccess(UserConnection info) {
platform.onLoginSuccess(info); platform.getConnectionManager().onLoginSuccess(info);
} }
public void handleDisconnect(UUID id) { public void handleDisconnect(UUID id) {
@ -135,7 +135,7 @@ public class ViaManager {
} }
public void handleDisconnect(UserConnection info) { public void handleDisconnect(UserConnection info) {
platform.onDisconnect(info); platform.getConnectionManager().onDisconnect(info);
} }
public ViaPlatform<?> getPlatform() { public ViaPlatform<?> getPlatform() {
@ -167,6 +167,6 @@ public class ViaManager {
} }
public UserConnection getConnection(UUID playerUUID) { public UserConnection getConnection(UUID playerUUID) {
return platform.getConnectedClient(playerUUID); return platform.getConnectionManager().getConnectedClient(playerUUID);
} }
} }

Datei anzeigen

@ -0,0 +1,54 @@
package us.myles.ViaVersion.api.platform;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
/**
* Handles UserConnections
*/
public class ViaConnectionManager {
protected final Map<UUID, UserConnection> clients = new ConcurrentHashMap<>();
protected final Set<UserConnection> connections = Collections.newSetFromMap(new ConcurrentHashMap<>());
public void onLoginSuccess(UserConnection connection) {
Objects.requireNonNull(connection, "connection is null!");
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.add(connection);
clients.put(id, connection);
}
public void onDisconnect(UserConnection connection) {
Objects.requireNonNull(connection, "connection is null!");
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.remove(connection);
clients.remove(id);
}
/**
* Returns a map containing the UUIDs and frontend UserConnections from players connected to this proxy server
* Returns empty list when there isn't a server
*/
public Map<UUID, UserConnection> getConnectedClients() {
return Collections.unmodifiableMap(clients);
}
/**
* Returns the frontend UserConnection from the player connected to this proxy server
* Returns null when there isn't a server or connection was not found
*/
public UserConnection getConnectedClient(UUID clientIdentifier) {
return clients.get(clientIdentifier);
}
/**
* Returns all UserConnections which are active
* May contain duplicated UUIDs on multiple ProtocolInfo.
* May contain frontend, backend and/or client-sided connections.
*/
public Set<UserConnection> getConnections() {
return Collections.unmodifiableSet(connections);
}
}

Datei anzeigen

@ -5,11 +5,8 @@ import us.myles.ViaVersion.api.ViaAPI;
import us.myles.ViaVersion.api.ViaVersionConfig; import us.myles.ViaVersion.api.ViaVersionConfig;
import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.command.ViaCommandSender;
import us.myles.ViaVersion.api.configuration.ConfigurationProvider; import us.myles.ViaVersion.api.configuration.ConfigurationProvider;
import us.myles.ViaVersion.api.data.UserConnection;
import java.io.File; import java.io.File;
import java.util.Map;
import java.util.Set;
import java.util.UUID; import java.util.UUID;
import java.util.logging.Logger; import java.util.logging.Logger;
@ -170,17 +167,5 @@ public interface ViaPlatform<T> {
*/ */
boolean isOldClientsAllowed(); boolean isOldClientsAllowed();
void onLoginSuccess(UserConnection connection); ViaConnectionManager getConnectionManager();
void onDisconnect(UserConnection connection);
Map<UUID, UserConnection> getConnectedClients();
UserConnection getConnectedClient(UUID clientIdentifier);
/**
* May contain duplicated UUIDs on multiple ProtocolInfo.
* May contain client-sided connections.
*/
Set<UserConnection> getConnections();
} }

Datei anzeigen

@ -2,7 +2,6 @@ package us.myles.ViaVersion;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.inject.Inject; import com.google.inject.Inject;
import lombok.Getter;
import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer; import net.md_5.bungee.chat.ComponentSerializer;
import org.spongepowered.api.Game; import org.spongepowered.api.Game;
@ -20,11 +19,10 @@ import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.command.ViaCommandSender;
import us.myles.ViaVersion.api.configuration.ConfigurationProvider; import us.myles.ViaVersion.api.configuration.ConfigurationProvider;
import us.myles.ViaVersion.api.data.MappingDataLoader; import us.myles.ViaVersion.api.data.MappingDataLoader;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.platform.TaskId; import us.myles.ViaVersion.api.platform.TaskId;
import us.myles.ViaVersion.api.platform.ViaConnectionManager;
import us.myles.ViaVersion.api.platform.ViaPlatform; import us.myles.ViaVersion.api.platform.ViaPlatform;
import us.myles.ViaVersion.dump.PluginInfo; import us.myles.ViaVersion.dump.PluginInfo;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import us.myles.ViaVersion.sponge.VersionInfo; import us.myles.ViaVersion.sponge.VersionInfo;
import us.myles.ViaVersion.sponge.commands.SpongeCommandHandler; import us.myles.ViaVersion.sponge.commands.SpongeCommandHandler;
import us.myles.ViaVersion.sponge.commands.SpongeCommandSender; import us.myles.ViaVersion.sponge.commands.SpongeCommandSender;
@ -34,7 +32,6 @@ import us.myles.ViaVersion.util.GsonUtil;
import java.io.File; import java.io.File;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger; import java.util.logging.Logger;
@Plugin(id = "viaversion", @Plugin(id = "viaversion",
@ -44,25 +41,17 @@ import java.util.logging.Logger;
description = "Allow newer Minecraft versions to connect to an older server version." description = "Allow newer Minecraft versions to connect to an older server version."
) )
public class SpongePlugin implements ViaPlatform<Player> { public class SpongePlugin implements ViaPlatform<Player> {
private final Map<UUID, UserConnection> clients = new ConcurrentHashMap<>();
private final Set<UserConnection> connections = Collections.newSetFromMap(new ConcurrentHashMap<>());
@Inject @Inject
private Game game; private Game game;
@Inject @Inject
private PluginContainer container; private PluginContainer container;
@Inject @Inject
@DefaultConfig(sharedRoot = true) @DefaultConfig(sharedRoot = true)
private File spongeConfig; private File spongeConfig;
@Getter private final ViaConnectionManager connectionManager = new ViaConnectionManager();
private SpongeViaAPI api = new SpongeViaAPI(); private final SpongeViaAPI api = new SpongeViaAPI();
@Getter
private SpongeViaConfig conf; private SpongeViaConfig conf;
@Getter
private Logger logger; private Logger logger;
@Listener @Listener
@ -190,7 +179,7 @@ public class SpongePlugin implements ViaPlatform<Player> {
@Override @Override
public boolean kickPlayer(UUID uuid, String message) { public boolean kickPlayer(UUID uuid, String message) {
return game.getServer().getPlayer(uuid).map(player -> { return game.getServer().getPlayer(uuid).map(player -> {
player.kick(TextSerializers.LEGACY_FORMATTING_CODE.deserialize(message)); player.kick(TextSerializers.formattingCode('§').deserialize(message));
return true; return true;
}).orElse(false); }).orElse(false);
} }
@ -239,35 +228,23 @@ public class SpongePlugin implements ViaPlatform<Player> {
return true; return true;
} }
@Override @Override
public void onLoginSuccess(UserConnection connection) { public ViaConnectionManager getConnectionManager() {
Objects.requireNonNull(connection, "connection is null!"); return connectionManager;
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.add(connection);
clients.put(id, connection);
} }
@Override @Override
public void onDisconnect(UserConnection connection) { public SpongeViaAPI getApi() {
Objects.requireNonNull(connection, "connection is null!"); return api;
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.remove(connection);
clients.remove(id);
} }
@Override @Override
public Map<UUID, UserConnection> getConnectedClients() { public SpongeViaConfig getConf() {
return Collections.unmodifiableMap(clients); return conf;
} }
@Override @Override
public UserConnection getConnectedClient(UUID clientIdentifier) { public Logger getLogger() {
return clients.get(clientIdentifier); return logger;
}
@Override
public Set<UserConnection> getConnections() {
return Collections.unmodifiableSet(connections);
} }
} }

Datei anzeigen

@ -73,7 +73,7 @@ public class SpongeViaAPI implements ViaAPI<Player> {
return outputSet; return outputSet;
} }
public Map<UUID, UserConnection> getPortedPlayers() { private Map<UUID, UserConnection> getPortedPlayers() {
return Via.getManager().getConnectedClients(); return Via.getManager().getConnectedClients();
} }
} }

Datei anzeigen

@ -10,7 +10,6 @@ import com.velocitypowered.api.plugin.PluginContainer;
import com.velocitypowered.api.plugin.annotation.DataDirectory; import com.velocitypowered.api.plugin.annotation.DataDirectory;
import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ProxyServer;
import lombok.Getter;
import net.kyori.text.serializer.gson.GsonComponentSerializer; import net.kyori.text.serializer.gson.GsonComponentSerializer;
import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.chat.ComponentSerializer; import net.md_5.bungee.chat.ComponentSerializer;
@ -21,9 +20,9 @@ import us.myles.ViaVersion.api.configuration.ConfigurationProvider;
import us.myles.ViaVersion.api.data.MappingDataLoader; import us.myles.ViaVersion.api.data.MappingDataLoader;
import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.platform.TaskId; import us.myles.ViaVersion.api.platform.TaskId;
import us.myles.ViaVersion.api.platform.ViaConnectionManager;
import us.myles.ViaVersion.api.platform.ViaPlatform; import us.myles.ViaVersion.api.platform.ViaPlatform;
import us.myles.ViaVersion.dump.PluginInfo; import us.myles.ViaVersion.dump.PluginInfo;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import us.myles.ViaVersion.util.GsonUtil; import us.myles.ViaVersion.util.GsonUtil;
import us.myles.ViaVersion.velocity.VersionInfo; import us.myles.ViaVersion.velocity.VersionInfo;
import us.myles.ViaVersion.velocity.command.VelocityCommandHandler; import us.myles.ViaVersion.velocity.command.VelocityCommandHandler;
@ -35,7 +34,6 @@ import us.myles.ViaVersion.velocity.util.LoggerWrapper;
import java.io.File; import java.io.File;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@Plugin( @Plugin(
@ -47,23 +45,20 @@ import java.util.concurrent.TimeUnit;
url = "https://viaversion.com" url = "https://viaversion.com"
) )
public class VelocityPlugin implements ViaPlatform<Player> { public class VelocityPlugin implements ViaPlatform<Player> {
private final Map<UUID, UserConnection> clients = new ConcurrentHashMap<>(); public static ProxyServer PROXY;
private final Set<UserConnection> connections = Collections.newSetFromMap(new ConcurrentHashMap<>());
@Inject @Inject
private ProxyServer proxy; private ProxyServer proxy;
@Inject @Inject
public static ProxyServer PROXY;
@Inject
private Logger loggerslf4j; private Logger loggerslf4j;
private java.util.logging.Logger logger;
@Inject @Inject
@DataDirectory @DataDirectory
private Path configDir; private Path configDir;
private VelocityViaAPI api; private VelocityViaAPI api;
private java.util.logging.Logger logger;
private VelocityViaConfig conf; private VelocityViaConfig conf;
private ViaConnectionManager connectionManager;
@Subscribe @Subscribe
public void onProxyInit(ProxyInitializeEvent e) { public void onProxyInit(ProxyInitializeEvent e) {
@ -73,6 +68,7 @@ public class VelocityPlugin implements ViaPlatform<Player> {
api = new VelocityViaAPI(); api = new VelocityViaAPI();
conf = new VelocityViaConfig(configDir.toFile()); conf = new VelocityViaConfig(configDir.toFile());
logger = new LoggerWrapper(loggerslf4j); logger = new LoggerWrapper(loggerslf4j);
connectionManager = new ViaConnectionManager();
Via.init(ViaManager.builder() Via.init(ViaManager.builder()
.platform(this) .platform(this)
.commandHandler(commandHandler) .commandHandler(commandHandler)
@ -88,7 +84,7 @@ public class VelocityPlugin implements ViaPlatform<Player> {
@Subscribe @Subscribe
public void onQuit(DisconnectEvent e) { public void onQuit(DisconnectEvent e) {
UserConnection userConnection = getConnectedClient(e.getPlayer().getUniqueId()); UserConnection userConnection = connectionManager.getConnectedClient(e.getPlayer().getUniqueId());
if (userConnection != null) { if (userConnection != null) {
// Only remove if the connection is disconnected (eg. relogin) // Only remove if the connection is disconnected (eg. relogin)
if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) { if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) {
@ -236,33 +232,7 @@ public class VelocityPlugin implements ViaPlatform<Player> {
} }
@Override @Override
public void onLoginSuccess(UserConnection connection) { public ViaConnectionManager getConnectionManager() {
Objects.requireNonNull(connection, "connection is null!"); return connectionManager;
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.add(connection);
clients.put(id, connection);
}
@Override
public void onDisconnect(UserConnection connection) {
Objects.requireNonNull(connection, "connection is null!");
UUID id = connection.get(ProtocolInfo.class).getUuid();
connections.remove(connection);
clients.remove(id);
}
@Override
public Map<UUID, UserConnection> getConnectedClients() {
return Collections.unmodifiableMap(clients);
}
@Override
public UserConnection getConnectedClient(UUID clientIdentifier) {
return clients.get(clientIdentifier);
}
@Override
public Set<UserConnection> getConnections() {
return Collections.unmodifiableSet(connections);
} }
} }

Datei anzeigen

@ -79,7 +79,7 @@ public class VelocityViaAPI implements ViaAPI<Player> {
return outputSet; return outputSet;
} }
public Map<UUID, UserConnection> getPortedPlayers() { private Map<UUID, UserConnection> getPortedPlayers() {
return Via.getManager().getConnectedClients(); return Via.getManager().getConnectedClients();
} }
} }