From ca78bf98513b7902d674d0b2e4f56110bc0303ce Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Sun, 12 Apr 2020 15:37:08 -0300 Subject: [PATCH 1/6] Remove portedPlayers field, let platform handle players --- .../us/myles/ViaVersion/ViaVersionPlugin.java | 43 +++++++++++-- .../bukkit/platform/BukkitViaAPI.java | 2 +- .../bukkit/platform/BukkitViaLoader.java | 2 +- .../us/myles/ViaVersion/BungeePlugin.java | 44 +++++++++++-- .../bungee/platform/BungeeViaAPI.java | 2 +- .../java/us/myles/ViaVersion/ViaManager.java | 42 ++++++++----- .../ViaVersion/api/platform/ViaPlatform.java | 17 +++++ .../protocols/base/BaseProtocol1_7.java | 2 +- .../TabCompleteThread.java | 2 +- .../protocol1_9to1_8/ViaIdleThread.java | 2 +- .../us/myles/ViaVersion/SpongePlugin.java | 52 +++++++++++++--- .../sponge/listeners/ClientLeaveListener.java | 2 +- .../sponge/platform/SpongeViaAPI.java | 2 +- .../us/myles/ViaVersion/VelocityPlugin.java | 62 +++++++++++++++++-- .../velocity/platform/VelocityViaAPI.java | 2 +- 15 files changed, 231 insertions(+), 47 deletions(-) diff --git a/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java b/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java index d42b874a5..1ee6b90e0 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java @@ -11,6 +11,7 @@ import us.myles.ViaVersion.api.ViaAPI; import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.configuration.ConfigurationProvider; 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.ViaPlatform; import us.myles.ViaVersion.bukkit.classgenerator.ClassGenerator; @@ -19,15 +20,18 @@ import us.myles.ViaVersion.bukkit.commands.BukkitCommandSender; import us.myles.ViaVersion.bukkit.platform.*; import us.myles.ViaVersion.bukkit.util.NMSUtil; import us.myles.ViaVersion.dump.PluginInfo; +import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.util.GsonUtil; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; -public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform { +public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform { private static ViaVersionPlugin instance; + + private final Map clients = new ConcurrentHashMap<>(); + private final Set connections = Collections.newSetFromMap(new ConcurrentHashMap<>()); private final BukkitCommandHandler commandHandler; private final BukkitViaConfig conf; private final ViaAPI api = new BukkitViaAPI(this); @@ -279,4 +283,35 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform { public static ViaVersionPlugin getInstance() { return instance; } + + @Override + 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); + } + + @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 getConnectedClients() { + return Collections.unmodifiableMap(clients); + } + + @Override + public UserConnection getConnectedClient(UUID clientIdentifier) { + return clients.get(clientIdentifier); + } + + @Override + public Set getConnections() { + return Collections.unmodifiableSet(connections); + } } diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java index 8ff4ec35d..cf88538a5 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java @@ -108,6 +108,6 @@ public class BukkitViaAPI implements ViaAPI { } public Map getPortedPlayers() { - return Via.getManager().getPortedPlayers(); + return Via.getManager().getConnectedClients(); } } diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaLoader.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaLoader.java index 50d5eba46..7672cfadc 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaLoader.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaLoader.java @@ -71,7 +71,7 @@ public class BukkitViaLoader implements ViaPlatformLoader { registerListener(new Listener() { @EventHandler public void onPlayerQuit(PlayerQuitEvent e) { - Via.getManager().removePortedClient(e.getPlayer().getUniqueId()); + Via.getManager().handleDisconnect(e.getPlayer().getUniqueId()); } }); diff --git a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java index bf8a49f03..cbaf8fe27 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java +++ b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java @@ -22,15 +22,16 @@ import us.myles.ViaVersion.bungee.commands.BungeeCommandSender; import us.myles.ViaVersion.bungee.platform.*; import us.myles.ViaVersion.bungee.service.ProtocolDetectorService; import us.myles.ViaVersion.dump.PluginInfo; +import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.util.GsonUtil; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.UUID; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; public class BungeePlugin extends Plugin implements ViaPlatform, Listener { + private final Map clients = new ConcurrentHashMap<>(); + private final Set connections = Collections.newSetFromMap(new ConcurrentHashMap<>()); private BungeeViaAPI api; private BungeeViaConfig config; private BungeeCommandHandler commandHandler; @@ -184,13 +185,44 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener { return true; } + @Override + 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); + } + + @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 getConnectedClients() { + return Collections.unmodifiableMap(clients); + } + + @Override + public UserConnection getConnectedClient(UUID clientIdentifier) { + return clients.get(clientIdentifier); + } + + @Override + public Set getConnections() { + return Collections.unmodifiableSet(connections); + } + @EventHandler public void onQuit(PlayerDisconnectEvent e) { - UserConnection userConnection = Via.getManager().getPortedPlayers().get(e.getPlayer().getUniqueId()); + UserConnection userConnection = getConnectedClient(e.getPlayer().getUniqueId()); if (userConnection != null) { // Only remove if the connection is disconnected (eg. relogin) if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) { - Via.getManager().removePortedClient(e.getPlayer().getUniqueId()); + Via.getManager().handleDisconnect(e.getPlayer().getUniqueId()); } } diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java index 5b779c85f..3ace9afec 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java +++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java @@ -79,7 +79,7 @@ public class BungeeViaAPI implements ViaAPI { } public Map getPortedPlayers() { - return Via.getManager().getPortedPlayers(); + return Via.getManager().getConnectedClients(); } /** diff --git a/common/src/main/java/us/myles/ViaVersion/ViaManager.java b/common/src/main/java/us/myles/ViaVersion/ViaManager.java index d3d9fde44..2b971521b 100644 --- a/common/src/main/java/us/myles/ViaVersion/ViaManager.java +++ b/common/src/main/java/us/myles/ViaVersion/ViaManager.java @@ -10,18 +10,16 @@ import us.myles.ViaVersion.api.platform.providers.ViaProviders; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolVersion; import us.myles.ViaVersion.commands.ViaCommandHandler; -import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.TabCompleteThread; import us.myles.ViaVersion.protocols.protocol1_9to1_8.ViaIdleThread; import us.myles.ViaVersion.update.UpdateUtil; import java.util.Map; +import java.util.Set; import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; public class ViaManager { - private final Map portedPlayers = new ConcurrentHashMap<>(); - private final ViaPlatform platform; + private final ViaPlatform platform; private final ViaProviders providers = new ViaProviders(); private boolean debug; // Internals @@ -30,7 +28,7 @@ public class ViaManager { private final ViaPlatformLoader loader; @Builder - public ViaManager(ViaPlatform platform, ViaInjector injector, ViaCommandHandler commandHandler, ViaPlatformLoader loader) { + public ViaManager(ViaPlatform platform, ViaInjector injector, ViaCommandHandler commandHandler, ViaPlatformLoader loader) { this.platform = platform; this.injector = injector; this.commandHandler = commandHandler; @@ -112,23 +110,35 @@ public class ViaManager { loader.unload(); } - public void addPortedClient(UserConnection info) { - portedPlayers.put(info.get(ProtocolInfo.class).getUuid(), info); + public Set getConnections() { + return platform.getConnections(); } - public void removePortedClient(UUID clientID) { - portedPlayers.remove(clientID); + /** + * @deprecated use getConnectedClients() + */ + @Deprecated + public Map getPortedClients() { + return getConnectedClients(); } - public UserConnection getConnection(UUID playerUUID) { - return portedPlayers.get(playerUUID); + public Map getConnectedClients() { + return platform.getConnectedClients(); } - public Map getPortedPlayers() { - return portedPlayers; + public void handleLoginSuccess(UserConnection info) { + platform.onLoginSuccess(info); } - public ViaPlatform getPlatform() { + public void handleDisconnect(UUID id) { + handleDisconnect(getConnection(id)); + } + + public void handleDisconnect(UserConnection info) { + platform.onDisconnect(info); + } + + public ViaPlatform getPlatform() { return platform; } @@ -155,4 +165,8 @@ public class ViaManager { public ViaPlatformLoader getLoader() { return loader; } + + public UserConnection getConnection(UUID playerUUID) { + return platform.getConnectedClient(playerUUID); + } } diff --git a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatform.java b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatform.java index b04bb75c7..24a04348e 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatform.java +++ b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatform.java @@ -5,8 +5,11 @@ import us.myles.ViaVersion.api.ViaAPI; import us.myles.ViaVersion.api.ViaVersionConfig; import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.configuration.ConfigurationProvider; +import us.myles.ViaVersion.api.data.UserConnection; import java.io.File; +import java.util.Map; +import java.util.Set; import java.util.UUID; import java.util.logging.Logger; @@ -166,4 +169,18 @@ public interface ViaPlatform { * @return True if allowed */ boolean isOldClientsAllowed(); + + void onLoginSuccess(UserConnection connection); + + void onDisconnect(UserConnection connection); + + Map getConnectedClients(); + + UserConnection getConnectedClient(UUID clientIdentifier); + + /** + * May contain duplicated UUIDs on multiple ProtocolInfo. + * May contain client-sided connections. + */ + Set getConnections(); } diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/base/BaseProtocol1_7.java b/common/src/main/java/us/myles/ViaVersion/protocols/base/BaseProtocol1_7.java index 8ad74afde..8ccd9f60a 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/base/BaseProtocol1_7.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/base/BaseProtocol1_7.java @@ -133,7 +133,7 @@ public class BaseProtocol1_7 extends Protocol { String username = wrapper.passthrough(Type.STRING); info.setUsername(username); // Add to ported clients - Via.getManager().addPortedClient(wrapper.user()); + Via.getManager().handleLoginSuccess(wrapper.user()); if (info.getPipeline().pipes().size() == 2 && info.getPipeline().pipes().get(1).getClass() == BaseProtocol1_7.class diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/TabCompleteThread.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/TabCompleteThread.java index 2f08b6217..57971b5cd 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/TabCompleteThread.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_13to1_12_2/TabCompleteThread.java @@ -8,7 +8,7 @@ import us.myles.ViaVersion.protocols.protocol1_13to1_12_2.storage.TabCompleteTra public class TabCompleteThread implements Runnable { @Override public void run() { - for (UserConnection info : Via.getManager().getPortedPlayers().values()) { + for (UserConnection info : Via.getManager().getConnections()) { if (info.has(ProtocolInfo.class) && info.get(ProtocolInfo.class).getPipeline().contains(Protocol1_13To1_12_2.class)) { if (info.getChannel().isOpen()) { info.get(TabCompleteTracker.class).sendPacketToServer(); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/ViaIdleThread.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/ViaIdleThread.java index 6dc8edf14..497eaebfa 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/ViaIdleThread.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_9to1_8/ViaIdleThread.java @@ -9,7 +9,7 @@ import us.myles.ViaVersion.protocols.protocol1_9to1_8.storage.MovementTracker; public class ViaIdleThread implements Runnable { @Override public void run() { - for (UserConnection info : Via.getManager().getPortedPlayers().values()) { + for (UserConnection info : Via.getManager().getConnections()) { ProtocolInfo protocolInfo = info.get(ProtocolInfo.class); if (protocolInfo != null && protocolInfo.getPipeline().contains(Protocol1_9To1_8.class)) { long nextIdleUpdate = info.get(MovementTracker.class).getNextIdlePacket(); diff --git a/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java b/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java index dc5290184..6fcd299cc 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java +++ b/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java @@ -20,9 +20,11 @@ import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.configuration.ConfigurationProvider; 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.ViaPlatform; import us.myles.ViaVersion.dump.PluginInfo; +import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.sponge.VersionInfo; import us.myles.ViaVersion.sponge.commands.SpongeCommandHandler; import us.myles.ViaVersion.sponge.commands.SpongeCommandSender; @@ -31,9 +33,8 @@ import us.myles.ViaVersion.sponge.util.LoggerWrapper; import us.myles.ViaVersion.util.GsonUtil; import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @Plugin(id = "viaversion", @@ -42,7 +43,10 @@ import java.util.logging.Logger; authors = {"_MylesC", "creeper123123321", "Gerrygames", "KennyTV", "Matsv"}, description = "Allow newer Minecraft versions to connect to an older server version." ) -public class SpongePlugin implements ViaPlatform { +public class SpongePlugin implements ViaPlatform { + private final Map clients = new ConcurrentHashMap<>(); + private final Set connections = Collections.newSetFromMap(new ConcurrentHashMap<>()); + @Inject private Game game; @@ -50,8 +54,8 @@ public class SpongePlugin implements ViaPlatform { private PluginContainer container; @Inject - @DefaultConfig(sharedRoot = false) - private File defaultConfig; + @DefaultConfig(sharedRoot = true) + private File spongeConfig; @Getter private SpongeViaAPI api = new SpongeViaAPI(); @@ -66,7 +70,7 @@ public class SpongePlugin implements ViaPlatform { // Setup Logger logger = new LoggerWrapper(container.getLogger()); // Setup Plugin - conf = new SpongeViaConfig(container, defaultConfig.getParentFile()); + conf = new SpongeViaConfig(container, spongeConfig); SpongeCommandHandler commandHandler = new SpongeCommandHandler(); game.getCommandManager().register(this, commandHandler, "viaversion", "viaver", "vvsponge"); logger.info("ViaVersion " + getPluginVersion() + " is now loaded!"); @@ -203,7 +207,7 @@ public class SpongePlugin implements ViaPlatform { @Override public File getDataFolder() { - return defaultConfig.getParentFile(); + return spongeConfig; } @Override @@ -234,4 +238,36 @@ public class SpongePlugin implements ViaPlatform { public boolean isOldClientsAllowed() { return true; } + + + @Override + 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); + } + + @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 getConnectedClients() { + return Collections.unmodifiableMap(clients); + } + + @Override + public UserConnection getConnectedClient(UUID clientIdentifier) { + return clients.get(clientIdentifier); + } + + @Override + public Set getConnections() { + return Collections.unmodifiableSet(connections); + } } diff --git a/sponge/src/main/java/us/myles/ViaVersion/sponge/listeners/ClientLeaveListener.java b/sponge/src/main/java/us/myles/ViaVersion/sponge/listeners/ClientLeaveListener.java index 20ef79688..874ab3429 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/sponge/listeners/ClientLeaveListener.java +++ b/sponge/src/main/java/us/myles/ViaVersion/sponge/listeners/ClientLeaveListener.java @@ -7,6 +7,6 @@ import us.myles.ViaVersion.api.Via; public class ClientLeaveListener { @Listener public void onDisconnect(ClientConnectionEvent.Disconnect disconnect) { - Via.getManager().removePortedClient(disconnect.getTargetEntity().getUniqueId()); + Via.getManager().handleDisconnect(disconnect.getTargetEntity().getUniqueId()); } } diff --git a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java index c23452b80..4f17fb37b 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java +++ b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java @@ -74,6 +74,6 @@ public class SpongeViaAPI implements ViaAPI { } public Map getPortedPlayers() { - return Via.getManager().getPortedPlayers(); + return Via.getManager().getConnectedClients(); } } diff --git a/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java b/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java index 0d59a40f9..05e3b5278 100644 --- a/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java +++ b/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java @@ -23,6 +23,7 @@ import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.platform.TaskId; import us.myles.ViaVersion.api.platform.ViaPlatform; import us.myles.ViaVersion.dump.PluginInfo; +import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.util.GsonUtil; import us.myles.ViaVersion.velocity.VersionInfo; import us.myles.ViaVersion.velocity.command.VelocityCommandHandler; @@ -33,9 +34,8 @@ import us.myles.ViaVersion.velocity.util.LoggerWrapper; import java.io.File; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @Plugin( @@ -46,19 +46,23 @@ import java.util.concurrent.TimeUnit; description = "Allow newer Minecraft versions to connect to an older server version.", url = "https://viaversion.com" ) -@Getter public class VelocityPlugin implements ViaPlatform { + private final Map clients = new ConcurrentHashMap<>(); + private final Set connections = Collections.newSetFromMap(new ConcurrentHashMap<>()); @Inject private ProxyServer proxy; @Inject public static ProxyServer PROXY; @Inject private Logger loggerslf4j; + private java.util.logging.Logger logger; @Inject @DataDirectory private Path configDir; + private VelocityViaAPI api; + private VelocityViaConfig conf; @Subscribe @@ -84,11 +88,11 @@ public class VelocityPlugin implements ViaPlatform { @Subscribe public void onQuit(DisconnectEvent e) { - UserConnection userConnection = Via.getManager().getPortedPlayers().get(e.getPlayer().getUniqueId()); + UserConnection userConnection = getConnectedClient(e.getPlayer().getUniqueId()); if (userConnection != null) { // Only remove if the connection is disconnected (eg. relogin) if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) { - Via.getManager().removePortedClient(e.getPlayer().getUniqueId()); + Via.getManager().handleDisconnect(e.getPlayer().getUniqueId()); } } } @@ -188,6 +192,16 @@ public class VelocityPlugin implements ViaPlatform { return configDir.toFile(); } + @Override + public VelocityViaAPI getApi() { + return api; + } + + @Override + public VelocityViaConfig getConf() { + return conf; + } + @Override public void onReload() { @@ -215,4 +229,40 @@ public class VelocityPlugin implements ViaPlatform { public boolean isOldClientsAllowed() { return true; } + + @Override + public java.util.logging.Logger getLogger() { + return logger; + } + + @Override + 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); + } + + @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 getConnectedClients() { + return Collections.unmodifiableMap(clients); + } + + @Override + public UserConnection getConnectedClient(UUID clientIdentifier) { + return clients.get(clientIdentifier); + } + + @Override + public Set getConnections() { + return Collections.unmodifiableSet(connections); + } } diff --git a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java index dc6674d6d..00b2f1318 100644 --- a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java +++ b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java @@ -80,6 +80,6 @@ public class VelocityViaAPI implements ViaAPI { } public Map getPortedPlayers() { - return Via.getManager().getPortedPlayers(); + return Via.getManager().getConnectedClients(); } } From a105c5cb1180e14a0f9213c21b1a55dcd90f02cf Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Sun, 12 Apr 2020 16:47:32 -0300 Subject: [PATCH 2/6] Make getPortedPlayers() private, update bungee-api, remove some lombok usage, create ViaConnectionManager --- .../us/myles/ViaVersion/ViaVersionPlugin.java | 39 ++----------- .../bukkit/platform/BukkitViaAPI.java | 6 +- bungee/pom.xml | 2 +- .../us/myles/ViaVersion/BungeePlugin.java | 58 ++++++------------- .../bungee/platform/BungeeViaAPI.java | 2 +- .../java/us/myles/ViaVersion/ViaManager.java | 10 ++-- .../api/platform/ViaConnectionManager.java | 54 +++++++++++++++++ .../ViaVersion/api/platform/ViaPlatform.java | 17 +----- .../us/myles/ViaVersion/SpongePlugin.java | 47 ++++----------- .../sponge/platform/SpongeViaAPI.java | 2 +- .../us/myles/ViaVersion/VelocityPlugin.java | 48 +++------------ .../velocity/platform/VelocityViaAPI.java | 2 +- 12 files changed, 110 insertions(+), 177 deletions(-) create mode 100644 common/src/main/java/us/myles/ViaVersion/api/platform/ViaConnectionManager.java diff --git a/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java b/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java index 1ee6b90e0..2f2a01e69 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/ViaVersionPlugin.java @@ -11,8 +11,8 @@ import us.myles.ViaVersion.api.ViaAPI; import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.configuration.ConfigurationProvider; 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.ViaConnectionManager; import us.myles.ViaVersion.api.platform.ViaPlatform; import us.myles.ViaVersion.bukkit.classgenerator.ClassGenerator; 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.util.NMSUtil; import us.myles.ViaVersion.dump.PluginInfo; -import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.util.GsonUtil; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform { - private static ViaVersionPlugin instance; - - private final Map clients = new ConcurrentHashMap<>(); - private final Set connections = Collections.newSetFromMap(new ConcurrentHashMap<>()); + private final ViaConnectionManager connectionManager = new ViaConnectionManager(); private final BukkitCommandHandler commandHandler; private final BukkitViaConfig conf; private final ViaAPI api = new BukkitViaAPI(this); @@ -285,33 +280,7 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaPlatform } @Override - 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); - } - - @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 getConnectedClients() { - return Collections.unmodifiableMap(clients); - } - - @Override - public UserConnection getConnectedClient(UUID clientIdentifier) { - return clients.get(clientIdentifier); - } - - @Override - public Set getConnections() { - return Collections.unmodifiableSet(connections); + public ViaConnectionManager getConnectionManager() { + return connectionManager; } } diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java index cf88538a5..969328234 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java @@ -71,12 +71,12 @@ public class BukkitViaAPI implements ViaAPI { } @Override - public BossBar createBossBar(String title, BossColor color, BossStyle style) { + public BossBar createBossBar(String title, BossColor color, BossStyle style) { return new ViaBossBar(title, 1F, color, style); } @Override - public BossBar createBossBar(String title, float health, BossColor color, BossStyle style) { + public BossBar createBossBar(String title, float health, BossColor color, BossStyle style) { return new ViaBossBar(title, health, color, style); } @@ -107,7 +107,7 @@ public class BukkitViaAPI implements ViaAPI { return plugin.isProtocolSupport(); } - public Map getPortedPlayers() { + private Map getPortedPlayers() { return Via.getManager().getConnectedClients(); } } diff --git a/bungee/pom.xml b/bungee/pom.xml index ac539806b..8a5625485 100644 --- a/bungee/pom.xml +++ b/bungee/pom.xml @@ -29,7 +29,7 @@ net.md-5 bungeecord-api - 1.13-SNAPSHOT + 1.15-SNAPSHOT provided diff --git a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java index cbaf8fe27..ea5bd0b5f 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java +++ b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java @@ -2,6 +2,7 @@ package us.myles.ViaVersion; import com.google.gson.JsonObject; 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.event.PlayerDisconnectEvent; 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.UserConnection; 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.bungee.commands.BungeeCommand; 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.service.ProtocolDetectorService; import us.myles.ViaVersion.dump.PluginInfo; -import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.util.GsonUtil; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; -public class BungeePlugin extends Plugin implements ViaPlatform, Listener { - private final Map clients = new ConcurrentHashMap<>(); - private final Set connections = Collections.newSetFromMap(new ConcurrentHashMap<>()); +public class BungeePlugin extends Plugin implements ViaPlatform, Listener { private BungeeViaAPI api; private BungeeViaConfig config; - private BungeeCommandHandler commandHandler; + private final ViaConnectionManager connectionManager = new ViaConnectionManager(); @Override public void onLoad() { @@ -52,7 +50,7 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener { api = new BungeeViaAPI(); config = new BungeeViaConfig(getDataFolder()); - commandHandler = new BungeeCommandHandler(); + BungeeCommandHandler commandHandler = new BungeeCommandHandler(); ProxyServer.getInstance().getPluginManager().registerCommand(this, new BungeeCommand(commandHandler)); // Init platform @@ -130,13 +128,13 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener { @Override public void sendMessage(UUID uuid, String message) { - getProxy().getPlayer(uuid).sendMessage(message); + getProxy().getPlayer(uuid).sendMessage(TextComponent.fromLegacyText(message)); } @Override public boolean kickPlayer(UUID uuid, String message) { if (getProxy().getPlayer(uuid) != null) { - getProxy().getPlayer(uuid).disconnect(message); + getProxy().getPlayer(uuid).disconnect(TextComponent.fromLegacyText(message)); return true; } return false; @@ -148,7 +146,7 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener { } @Override - public ViaAPI getApi() { + public ViaAPI getApi() { return api; } @@ -173,7 +171,13 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener { List plugins = new ArrayList<>(); 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("servers", GsonUtil.getGson().toJsonTree(ProtocolDetectorService.getDetectedIds())); @@ -186,39 +190,13 @@ public class BungeePlugin extends Plugin implements ViaPlatform, Listener { } @Override - 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); - } - - @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 getConnectedClients() { - return Collections.unmodifiableMap(clients); - } - - @Override - public UserConnection getConnectedClient(UUID clientIdentifier) { - return clients.get(clientIdentifier); - } - - @Override - public Set getConnections() { - return Collections.unmodifiableSet(connections); + public ViaConnectionManager getConnectionManager() { + return connectionManager; } @EventHandler public void onQuit(PlayerDisconnectEvent e) { - UserConnection userConnection = getConnectedClient(e.getPlayer().getUniqueId()); + UserConnection userConnection = getConnectionManager().getConnectedClient(e.getPlayer().getUniqueId()); if (userConnection != null) { // Only remove if the connection is disconnected (eg. relogin) if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) { diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java index 3ace9afec..0fd57fd60 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java +++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java @@ -78,7 +78,7 @@ public class BungeeViaAPI implements ViaAPI { return outputSet; } - public Map getPortedPlayers() { + private Map getPortedPlayers() { return Via.getManager().getConnectedClients(); } diff --git a/common/src/main/java/us/myles/ViaVersion/ViaManager.java b/common/src/main/java/us/myles/ViaVersion/ViaManager.java index 2b971521b..bf4d489b8 100644 --- a/common/src/main/java/us/myles/ViaVersion/ViaManager.java +++ b/common/src/main/java/us/myles/ViaVersion/ViaManager.java @@ -111,7 +111,7 @@ public class ViaManager { } public Set getConnections() { - return platform.getConnections(); + return platform.getConnectionManager().getConnections(); } /** @@ -123,11 +123,11 @@ public class ViaManager { } public Map getConnectedClients() { - return platform.getConnectedClients(); + return platform.getConnectionManager().getConnectedClients(); } public void handleLoginSuccess(UserConnection info) { - platform.onLoginSuccess(info); + platform.getConnectionManager().onLoginSuccess(info); } public void handleDisconnect(UUID id) { @@ -135,7 +135,7 @@ public class ViaManager { } public void handleDisconnect(UserConnection info) { - platform.onDisconnect(info); + platform.getConnectionManager().onDisconnect(info); } public ViaPlatform getPlatform() { @@ -167,6 +167,6 @@ public class ViaManager { } public UserConnection getConnection(UUID playerUUID) { - return platform.getConnectedClient(playerUUID); + return platform.getConnectionManager().getConnectedClient(playerUUID); } } diff --git a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaConnectionManager.java b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaConnectionManager.java new file mode 100644 index 000000000..4fa7fbd09 --- /dev/null +++ b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaConnectionManager.java @@ -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 clients = new ConcurrentHashMap<>(); + protected final Set 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 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 getConnections() { + return Collections.unmodifiableSet(connections); + } +} diff --git a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatform.java b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatform.java index 24a04348e..4c04c71c4 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatform.java +++ b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaPlatform.java @@ -5,11 +5,8 @@ import us.myles.ViaVersion.api.ViaAPI; import us.myles.ViaVersion.api.ViaVersionConfig; import us.myles.ViaVersion.api.command.ViaCommandSender; import us.myles.ViaVersion.api.configuration.ConfigurationProvider; -import us.myles.ViaVersion.api.data.UserConnection; import java.io.File; -import java.util.Map; -import java.util.Set; import java.util.UUID; import java.util.logging.Logger; @@ -170,17 +167,5 @@ public interface ViaPlatform { */ boolean isOldClientsAllowed(); - void onLoginSuccess(UserConnection connection); - - void onDisconnect(UserConnection connection); - - Map getConnectedClients(); - - UserConnection getConnectedClient(UUID clientIdentifier); - - /** - * May contain duplicated UUIDs on multiple ProtocolInfo. - * May contain client-sided connections. - */ - Set getConnections(); + ViaConnectionManager getConnectionManager(); } diff --git a/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java b/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java index 6fcd299cc..37e8674d8 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java +++ b/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java @@ -2,7 +2,6 @@ package us.myles.ViaVersion; import com.google.gson.JsonObject; import com.google.inject.Inject; -import lombok.Getter; import net.md_5.bungee.api.chat.TextComponent; import net.md_5.bungee.chat.ComponentSerializer; 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.configuration.ConfigurationProvider; 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.ViaConnectionManager; import us.myles.ViaVersion.api.platform.ViaPlatform; import us.myles.ViaVersion.dump.PluginInfo; -import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.sponge.VersionInfo; import us.myles.ViaVersion.sponge.commands.SpongeCommandHandler; import us.myles.ViaVersion.sponge.commands.SpongeCommandSender; @@ -34,7 +32,6 @@ import us.myles.ViaVersion.util.GsonUtil; import java.io.File; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Logger; @Plugin(id = "viaversion", @@ -44,25 +41,17 @@ import java.util.logging.Logger; description = "Allow newer Minecraft versions to connect to an older server version." ) public class SpongePlugin implements ViaPlatform { - private final Map clients = new ConcurrentHashMap<>(); - private final Set connections = Collections.newSetFromMap(new ConcurrentHashMap<>()); - @Inject private Game game; - @Inject private PluginContainer container; - @Inject @DefaultConfig(sharedRoot = true) private File spongeConfig; - @Getter - private SpongeViaAPI api = new SpongeViaAPI(); - @Getter + private final ViaConnectionManager connectionManager = new ViaConnectionManager(); + private final SpongeViaAPI api = new SpongeViaAPI(); private SpongeViaConfig conf; - - @Getter private Logger logger; @Listener @@ -190,7 +179,7 @@ public class SpongePlugin implements ViaPlatform { @Override public boolean kickPlayer(UUID uuid, String message) { return game.getServer().getPlayer(uuid).map(player -> { - player.kick(TextSerializers.LEGACY_FORMATTING_CODE.deserialize(message)); + player.kick(TextSerializers.formattingCode('ยง').deserialize(message)); return true; }).orElse(false); } @@ -239,35 +228,23 @@ public class SpongePlugin implements ViaPlatform { return true; } - @Override - 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 ViaConnectionManager getConnectionManager() { + return connectionManager; } @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); + public SpongeViaAPI getApi() { + return api; } @Override - public Map getConnectedClients() { - return Collections.unmodifiableMap(clients); + public SpongeViaConfig getConf() { + return conf; } @Override - public UserConnection getConnectedClient(UUID clientIdentifier) { - return clients.get(clientIdentifier); - } - - @Override - public Set getConnections() { - return Collections.unmodifiableSet(connections); + public Logger getLogger() { + return logger; } } diff --git a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java index 4f17fb37b..b75ae5dad 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java +++ b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java @@ -73,7 +73,7 @@ public class SpongeViaAPI implements ViaAPI { return outputSet; } - public Map getPortedPlayers() { + private Map getPortedPlayers() { return Via.getManager().getConnectedClients(); } } diff --git a/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java b/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java index 05e3b5278..1637eecd1 100644 --- a/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java +++ b/velocity/src/main/java/us/myles/ViaVersion/VelocityPlugin.java @@ -10,7 +10,6 @@ import com.velocitypowered.api.plugin.PluginContainer; import com.velocitypowered.api.plugin.annotation.DataDirectory; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.ProxyServer; -import lombok.Getter; import net.kyori.text.serializer.gson.GsonComponentSerializer; import net.md_5.bungee.api.chat.TextComponent; 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.UserConnection; 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.dump.PluginInfo; -import us.myles.ViaVersion.protocols.base.ProtocolInfo; import us.myles.ViaVersion.util.GsonUtil; import us.myles.ViaVersion.velocity.VersionInfo; import us.myles.ViaVersion.velocity.command.VelocityCommandHandler; @@ -35,7 +34,6 @@ import us.myles.ViaVersion.velocity.util.LoggerWrapper; import java.io.File; import java.nio.file.Path; import java.util.*; -import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @Plugin( @@ -47,23 +45,20 @@ import java.util.concurrent.TimeUnit; url = "https://viaversion.com" ) public class VelocityPlugin implements ViaPlatform { - private final Map clients = new ConcurrentHashMap<>(); - private final Set connections = Collections.newSetFromMap(new ConcurrentHashMap<>()); + public static ProxyServer PROXY; + @Inject private ProxyServer proxy; @Inject - public static ProxyServer PROXY; - @Inject private Logger loggerslf4j; - - private java.util.logging.Logger logger; @Inject @DataDirectory private Path configDir; private VelocityViaAPI api; - + private java.util.logging.Logger logger; private VelocityViaConfig conf; + private ViaConnectionManager connectionManager; @Subscribe public void onProxyInit(ProxyInitializeEvent e) { @@ -73,6 +68,7 @@ public class VelocityPlugin implements ViaPlatform { api = new VelocityViaAPI(); conf = new VelocityViaConfig(configDir.toFile()); logger = new LoggerWrapper(loggerslf4j); + connectionManager = new ViaConnectionManager(); Via.init(ViaManager.builder() .platform(this) .commandHandler(commandHandler) @@ -88,7 +84,7 @@ public class VelocityPlugin implements ViaPlatform { @Subscribe public void onQuit(DisconnectEvent e) { - UserConnection userConnection = getConnectedClient(e.getPlayer().getUniqueId()); + UserConnection userConnection = connectionManager.getConnectedClient(e.getPlayer().getUniqueId()); if (userConnection != null) { // Only remove if the connection is disconnected (eg. relogin) if (userConnection.getChannel() == null || !userConnection.getChannel().isOpen()) { @@ -236,33 +232,7 @@ public class VelocityPlugin implements ViaPlatform { } @Override - 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); - } - - @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 getConnectedClients() { - return Collections.unmodifiableMap(clients); - } - - @Override - public UserConnection getConnectedClient(UUID clientIdentifier) { - return clients.get(clientIdentifier); - } - - @Override - public Set getConnections() { - return Collections.unmodifiableSet(connections); + public ViaConnectionManager getConnectionManager() { + return connectionManager; } } diff --git a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java index 00b2f1318..ad4223d8f 100644 --- a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java +++ b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java @@ -79,7 +79,7 @@ public class VelocityViaAPI implements ViaAPI { return outputSet; } - public Map getPortedPlayers() { + private Map getPortedPlayers() { return Via.getManager().getConnectedClients(); } } From ee7eaecdb35f2af9ab5a881ec90cb4ac640ce577 Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Mon, 13 Apr 2020 08:51:04 -0300 Subject: [PATCH 3/6] move field --- bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java index ea5bd0b5f..38b6180a2 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java +++ b/bungee/src/main/java/us/myles/ViaVersion/BungeePlugin.java @@ -30,9 +30,9 @@ import java.util.*; import java.util.concurrent.TimeUnit; public class BungeePlugin extends Plugin implements ViaPlatform, Listener { + private final ViaConnectionManager connectionManager = new ViaConnectionManager(); private BungeeViaAPI api; private BungeeViaConfig config; - private final ViaConnectionManager connectionManager = new ViaConnectionManager(); @Override public void onLoad() { From 9e4ed56384db630f9d44ba57e2388fb64db32cd1 Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Tue, 14 Apr 2020 12:46:23 -0300 Subject: [PATCH 4/6] Revert SpongePlugin sharedRoot change --- sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java b/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java index 37e8674d8..cb3860e42 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java +++ b/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java @@ -46,7 +46,7 @@ public class SpongePlugin implements ViaPlatform { @Inject private PluginContainer container; @Inject - @DefaultConfig(sharedRoot = true) + @DefaultConfig(sharedRoot = false) private File spongeConfig; private final ViaConnectionManager connectionManager = new ViaConnectionManager(); From c12c43e79ad162b56dbeebcd54fbd294c730819d Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Tue, 14 Apr 2020 12:47:44 -0300 Subject: [PATCH 5/6] SpongePlugin readd .getParentFile() --- sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java b/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java index cb3860e42..11d6051b9 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java +++ b/sponge/src/main/java/us/myles/ViaVersion/SpongePlugin.java @@ -59,7 +59,7 @@ public class SpongePlugin implements ViaPlatform { // Setup Logger logger = new LoggerWrapper(container.getLogger()); // Setup Plugin - conf = new SpongeViaConfig(container, spongeConfig); + conf = new SpongeViaConfig(container, spongeConfig.getParentFile()); SpongeCommandHandler commandHandler = new SpongeCommandHandler(); game.getCommandManager().register(this, commandHandler, "viaversion", "viaver", "vvsponge"); logger.info("ViaVersion " + getPluginVersion() + " is now loaded!"); @@ -196,7 +196,7 @@ public class SpongePlugin implements ViaPlatform { @Override public File getDataFolder() { - return spongeConfig; + return spongeConfig.getParentFile(); } @Override From 17881b342ac75530122d1fad9f7022d52239c6ce Mon Sep 17 00:00:00 2001 From: creeper123123321 <7974274+creeper123123321@users.noreply.github.com> Date: Wed, 15 Apr 2020 11:35:09 -0300 Subject: [PATCH 6/6] javadoc, remove ViaAPIs getPortedPlayers, fix ViaManager.getPortedPlayers name, rename to ViaAPI#isInjected --- .../bukkit/platform/BukkitViaAPI.java | 16 ++++------- .../bungee/platform/BungeeViaAPI.java | 28 ++++++++----------- .../java/us/myles/ViaVersion/ViaManager.java | 8 ++++-- .../java/us/myles/ViaVersion/api/ViaAPI.java | 15 ++++++++-- .../api/platform/ViaConnectionManager.java | 14 ++++++++-- .../us/myles/ViaVersion/boss/CommonBoss.java | 2 +- .../sponge/platform/SpongeViaAPI.java | 21 +++++--------- .../velocity/platform/VelocityViaAPI.java | 27 ++++++------------ 8 files changed, 64 insertions(+), 67 deletions(-) diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java index 969328234..a41c414ef 100644 --- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java +++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaAPI.java @@ -16,7 +16,6 @@ import us.myles.ViaVersion.boss.ViaBossBar; import us.myles.ViaVersion.bukkit.util.ProtocolSupportUtil; import us.myles.ViaVersion.protocols.base.ProtocolInfo; -import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; import java.util.UUID; @@ -35,9 +34,9 @@ public class BukkitViaAPI implements ViaAPI { @Override public int getPlayerVersion(@NonNull UUID uuid) { - if (!isPorted(uuid)) + if (!isInjected(uuid)) return getExternalVersion(Bukkit.getPlayer(uuid)); - return getPortedPlayers().get(uuid).get(ProtocolInfo.class).getProtocolVersion(); + return Via.getManager().getConnection(uuid).get(ProtocolInfo.class).getProtocolVersion(); } private int getExternalVersion(Player player) { @@ -49,8 +48,8 @@ public class BukkitViaAPI implements ViaAPI { } @Override - public boolean isPorted(UUID playerUUID) { - return getPortedPlayers().containsKey(playerUUID); + public boolean isInjected(UUID playerUUID) { + return Via.getManager().isClientConnected(playerUUID); } @Override @@ -60,8 +59,8 @@ public class BukkitViaAPI implements ViaAPI { @Override public void sendRawPacket(UUID uuid, ByteBuf packet) throws IllegalArgumentException { - if (!isPorted(uuid)) throw new IllegalArgumentException("This player is not controlled by ViaVersion!"); - UserConnection ci = getPortedPlayers().get(uuid); + if (!isInjected(uuid)) throw new IllegalArgumentException("This player is not controlled by ViaVersion!"); + UserConnection ci = Via.getManager().getConnection(uuid); ci.sendRawPacket(packet); } @@ -107,7 +106,4 @@ public class BukkitViaAPI implements ViaAPI { return plugin.isProtocolSupport(); } - private Map getPortedPlayers() { - return Via.getManager().getConnectedClients(); - } } diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java index 0fd57fd60..65a3f5e75 100644 --- a/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java +++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/platform/BungeeViaAPI.java @@ -15,7 +15,6 @@ import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.bungee.service.ProtocolDetectorService; import us.myles.ViaVersion.protocols.base.ProtocolInfo; -import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; import java.util.UUID; @@ -23,24 +22,21 @@ import java.util.UUID; public class BungeeViaAPI implements ViaAPI { @Override public int getPlayerVersion(@NonNull ProxiedPlayer player) { - if (!isPorted(player.getUniqueId())) + UserConnection conn = Via.getManager().getConnection(player.getUniqueId()); + if (conn == null) { return player.getPendingConnection().getVersion(); - return getPortedPlayers().get(player.getUniqueId()).get(ProtocolInfo.class).getProtocolVersion(); + } + return conn.get(ProtocolInfo.class).getProtocolVersion(); } @Override public int getPlayerVersion(@NonNull UUID uuid) { - if (!isPorted(uuid)) { - ProxiedPlayer player = ProxyServer.getInstance().getPlayer(uuid); - if (player != null) return player.getPendingConnection().getVersion(); - return ProtocolRegistry.SERVER_PROTOCOL; - } - return getPortedPlayers().get(uuid).get(ProtocolInfo.class).getProtocolVersion(); + return getPlayerVersion(ProxyServer.getInstance().getPlayer(uuid)); } @Override - public boolean isPorted(UUID playerUUID) { - return getPortedPlayers().containsKey(playerUUID); + public boolean isInjected(UUID playerUUID) { + return Via.getManager().isClientConnected(playerUUID); } @Override @@ -50,8 +46,10 @@ public class BungeeViaAPI implements ViaAPI { @Override public void sendRawPacket(UUID uuid, ByteBuf packet) throws IllegalArgumentException { - if (!isPorted(uuid)) throw new IllegalArgumentException("This player is not controlled by ViaVersion!"); - UserConnection ci = getPortedPlayers().get(uuid); + if (!isInjected(uuid)) { + throw new IllegalArgumentException("This player is not controlled by ViaVersion!"); + } + UserConnection ci = Via.getManager().getConnection(uuid); ci.sendRawPacket(packet); } @@ -78,10 +76,6 @@ public class BungeeViaAPI implements ViaAPI { return outputSet; } - private Map getPortedPlayers() { - return Via.getManager().getConnectedClients(); - } - /** * Forces ViaVersion to probe a server * diff --git a/common/src/main/java/us/myles/ViaVersion/ViaManager.java b/common/src/main/java/us/myles/ViaVersion/ViaManager.java index bf4d489b8..b005145b5 100644 --- a/common/src/main/java/us/myles/ViaVersion/ViaManager.java +++ b/common/src/main/java/us/myles/ViaVersion/ViaManager.java @@ -21,11 +21,11 @@ import java.util.UUID; public class ViaManager { private final ViaPlatform platform; private final ViaProviders providers = new ViaProviders(); - private boolean debug; // Internals private final ViaInjector injector; private final ViaCommandHandler commandHandler; private final ViaPlatformLoader loader; + private boolean debug; @Builder public ViaManager(ViaPlatform platform, ViaInjector injector, ViaCommandHandler commandHandler, ViaPlatformLoader loader) { @@ -118,7 +118,7 @@ public class ViaManager { * @deprecated use getConnectedClients() */ @Deprecated - public Map getPortedClients() { + public Map getPortedPlayers() { return getConnectedClients(); } @@ -126,6 +126,10 @@ public class ViaManager { return platform.getConnectionManager().getConnectedClients(); } + public boolean isClientConnected(UUID player) { + return platform.getConnectionManager().isClientConnected(player); + } + public void handleLoginSuccess(UserConnection info) { platform.getConnectionManager().onLoginSuccess(info); } diff --git a/common/src/main/java/us/myles/ViaVersion/api/ViaAPI.java b/common/src/main/java/us/myles/ViaVersion/api/ViaAPI.java index 7a074af97..52ef3ebdb 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/ViaAPI.java +++ b/common/src/main/java/us/myles/ViaVersion/api/ViaAPI.java @@ -38,10 +38,21 @@ public interface ViaAPI { * * @param playerUUID UUID of a player * @return true if Via has a cached userconnection for this player - * @deprecated as of 0.9.9, because all players are ported use {@link #getPlayerVersion(UUID)} + * @deprecated as of 0.9.9, because all players are ported use {@link #getPlayerVersion(UUID)}, + * or use {@link #isInjected(UUID)} */ @Deprecated - boolean isPorted(UUID playerUUID); + default boolean isPorted(UUID playerUUID) { + return isInjected(playerUUID); + } + + /** + * Returns if Via injected into this player connection + * + * @param playerUUID UUID of a player + * @return true if Via has a cached UserConnection for this player + */ + boolean isInjected(UUID playerUUID); /** * Get the version of the plugin diff --git a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaConnectionManager.java b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaConnectionManager.java index 4fa7fbd09..cb7ea10fe 100644 --- a/common/src/main/java/us/myles/ViaVersion/api/platform/ViaConnectionManager.java +++ b/common/src/main/java/us/myles/ViaVersion/api/platform/ViaConnectionManager.java @@ -7,7 +7,7 @@ import java.util.*; import java.util.concurrent.ConcurrentHashMap; /** - * Handles UserConnections + * Handles injected UserConnections */ public class ViaConnectionManager { protected final Map clients = new ConcurrentHashMap<>(); @@ -30,6 +30,8 @@ public class ViaConnectionManager { /** * 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 + * When ViaVersion is reloaded, this method may not return some players. + * May not contain ProtocolSupport players. */ public Map getConnectedClients() { return Collections.unmodifiableMap(clients); @@ -38,17 +40,25 @@ public class ViaConnectionManager { /** * 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 + * When ViaVersion is reloaded, this method may not return some players. + * May not return ProtocolSupport players. */ public UserConnection getConnectedClient(UUID clientIdentifier) { return clients.get(clientIdentifier); } /** - * Returns all UserConnections which are active + * Returns all UserConnections which are registered * May contain duplicated UUIDs on multiple ProtocolInfo. * May contain frontend, backend and/or client-sided connections. + * When ViaVersion is reloaded, this method may not return some players. + * May not contain ProtocolSupport players. */ public Set getConnections() { return Collections.unmodifiableSet(connections); } + + public boolean isClientConnected(UUID playerId) { + return clients.containsKey(playerId); + } } diff --git a/common/src/main/java/us/myles/ViaVersion/boss/CommonBoss.java b/common/src/main/java/us/myles/ViaVersion/boss/CommonBoss.java index 748c7aae7..9de550bc4 100644 --- a/common/src/main/java/us/myles/ViaVersion/boss/CommonBoss.java +++ b/common/src/main/java/us/myles/ViaVersion/boss/CommonBoss.java @@ -161,7 +161,7 @@ public abstract class CommonBoss extends BossBar { } private void sendPacket(UUID uuid, PacketWrapper wrapper) { - if (!Via.getAPI().isPorted(uuid) || !(Via.getAPI().getPlayerVersion(uuid) >= ProtocolVersion.v1_9.getId())) { + if (!Via.getAPI().isInjected(uuid) || !(Via.getAPI().getPlayerVersion(uuid) >= ProtocolVersion.v1_9.getId())) { players.remove(uuid); return; } diff --git a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java index b75ae5dad..6f2401704 100644 --- a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java +++ b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaAPI.java @@ -12,7 +12,6 @@ import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.protocols.base.ProtocolInfo; -import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; import java.util.UUID; @@ -21,21 +20,19 @@ public class SpongeViaAPI implements ViaAPI { @Override public int getPlayerVersion(@NonNull Player player) { - if (!isPorted(player.getUniqueId())) - return ProtocolRegistry.SERVER_PROTOCOL; - return getPortedPlayers().get(player.getUniqueId()).get(ProtocolInfo.class).getProtocolVersion(); + return getPlayerVersion(player.getUniqueId()); } @Override public int getPlayerVersion(@NonNull UUID uuid) { - if (!isPorted(uuid)) + if (!isInjected(uuid)) return ProtocolRegistry.SERVER_PROTOCOL; - return getPortedPlayers().get(uuid).get(ProtocolInfo.class).getProtocolVersion(); + return Via.getManager().getConnection(uuid).get(ProtocolInfo.class).getProtocolVersion(); } @Override - public boolean isPorted(UUID playerUUID) { - return getPortedPlayers().containsKey(playerUUID); + public boolean isInjected(UUID playerUUID) { + return Via.getManager().isClientConnected(playerUUID); } @Override @@ -45,8 +42,8 @@ public class SpongeViaAPI implements ViaAPI { @Override public void sendRawPacket(UUID uuid, ByteBuf packet) throws IllegalArgumentException { - if (!isPorted(uuid)) throw new IllegalArgumentException("This player is not controlled by ViaVersion!"); - UserConnection ci = getPortedPlayers().get(uuid); + if (!isInjected(uuid)) throw new IllegalArgumentException("This player is not controlled by ViaVersion!"); + UserConnection ci = Via.getManager().getConnection(uuid); ci.sendRawPacket(packet); } @@ -72,8 +69,4 @@ public class SpongeViaAPI implements ViaAPI { return outputSet; } - - private Map getPortedPlayers() { - return Via.getManager().getConnectedClients(); - } } diff --git a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java index ad4223d8f..01efde8fe 100644 --- a/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java +++ b/velocity/src/main/java/us/myles/ViaVersion/velocity/platform/VelocityViaAPI.java @@ -1,7 +1,5 @@ package us.myles.ViaVersion.velocity.platform; -import com.velocitypowered.api.network.ProtocolVersion; -import com.velocitypowered.api.proxy.InboundConnection; import com.velocitypowered.api.proxy.Player; import io.netty.buffer.ByteBuf; import lombok.NonNull; @@ -15,7 +13,7 @@ import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.protocols.base.ProtocolInfo; -import java.util.Map; +import java.util.NoSuchElementException; import java.util.SortedSet; import java.util.TreeSet; import java.util.UUID; @@ -23,25 +21,19 @@ import java.util.UUID; public class VelocityViaAPI implements ViaAPI { @Override public int getPlayerVersion(@NonNull Player player) { - if (!isPorted(player.getUniqueId())) + if (!isInjected(player.getUniqueId())) return player.getProtocolVersion().getProtocol(); - return getPortedPlayers().get(player.getUniqueId()).get(ProtocolInfo.class).getProtocolVersion(); + return Via.getManager().getConnection(player.getUniqueId()).get(ProtocolInfo.class).getProtocolVersion(); } @Override public int getPlayerVersion(@NonNull UUID uuid) { - if (!isPorted(uuid)) { - return VelocityPlugin.PROXY.getPlayer(uuid) - .map(InboundConnection::getProtocolVersion) - .map(ProtocolVersion::getProtocol) - .orElse(ProtocolRegistry.SERVER_PROTOCOL); - } - return getPortedPlayers().get(uuid).get(ProtocolInfo.class).getProtocolVersion(); + return getPlayerVersion(VelocityPlugin.PROXY.getPlayer(uuid).orElseThrow(NoSuchElementException::new)); } @Override - public boolean isPorted(UUID playerUUID) { - return getPortedPlayers().containsKey(playerUUID); + public boolean isInjected(UUID playerUUID) { + return Via.getManager().isClientConnected(playerUUID); } @Override @@ -51,8 +43,8 @@ public class VelocityViaAPI implements ViaAPI { @Override public void sendRawPacket(UUID uuid, ByteBuf packet) throws IllegalArgumentException { - if (!isPorted(uuid)) throw new IllegalArgumentException("This player is not controlled by ViaVersion!"); - UserConnection ci = getPortedPlayers().get(uuid); + if (!isInjected(uuid)) throw new IllegalArgumentException("This player is not controlled by ViaVersion!"); + UserConnection ci = Via.getManager().getConnection(uuid); ci.sendRawPacket(packet); } @@ -79,7 +71,4 @@ public class VelocityViaAPI implements ViaAPI { return outputSet; } - private Map getPortedPlayers() { - return Via.getManager().getConnectedClients(); - } }