3
0
Mirror von https://github.com/ViaVersion/ViaVersion.git synchronisiert 2024-10-03 08:41:05 +02:00

Return -1 in getPlayerVersion if the player is not connected

Dieser Commit ist enthalten in:
KennyTV 2021-01-17 13:59:26 +01:00
Ursprung 2beed20f1b
Commit 4cc8a3f092
Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
GPG-Schlüssel-ID: 6BE3B555EBC5982B
8 geänderte Dateien mit 37 neuen und 48 gelöschten Zeilen

Datei anzeigen

@ -1 +1,5 @@
blank_issues_enabled: false blank_issues_enabled: false
contact_links:
- name: ViaVersion Discord Server
url: https://discord.gg/casfFyh
about: You can also join the Via Discord server for help with smaller issues during setup.

Datei anzeigen

@ -13,7 +13,6 @@ import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
import us.myles.ViaVersion.boss.ViaBossBar; import us.myles.ViaVersion.boss.ViaBossBar;
import us.myles.ViaVersion.bukkit.util.ProtocolSupportUtil; import us.myles.ViaVersion.bukkit.util.ProtocolSupportUtil;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import java.util.SortedSet; import java.util.SortedSet;
import java.util.TreeSet; import java.util.TreeSet;
@ -33,17 +32,15 @@ public class BukkitViaAPI implements ViaAPI<Player> {
@Override @Override
public int getPlayerVersion(UUID uuid) { public int getPlayerVersion(UUID uuid) {
if (!isInjected(uuid)) UserConnection connection = Via.getManager().getConnection(uuid);
return getExternalVersion(Bukkit.getPlayer(uuid)); if (connection == null) {
return Via.getManager().getConnection(uuid).getProtocolInfo().getProtocolVersion(); Player player = Bukkit.getPlayer(uuid);
} if (player != null && isProtocolSupport()) {
return ProtocolSupportUtil.getProtocolVersion(player);
private int getExternalVersion(Player player) { }
if (!isProtocolSupport()) { return -1;
return ProtocolRegistry.SERVER_PROTOCOL;
} else {
return ProtocolSupportUtil.getProtocolVersion(player);
} }
return connection.getProtocolInfo().getProtocolVersion();
} }
@Override @Override

Datei anzeigen

@ -1,7 +1,6 @@
package us.myles.ViaVersion.bungee.platform; package us.myles.ViaVersion.bungee.platform;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.config.ServerInfo; import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.Via;
@ -12,7 +11,6 @@ import us.myles.ViaVersion.api.boss.BossStyle;
import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
import us.myles.ViaVersion.bungee.service.ProtocolDetectorService; import us.myles.ViaVersion.bungee.service.ProtocolDetectorService;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import java.util.SortedSet; import java.util.SortedSet;
import java.util.TreeSet; import java.util.TreeSet;
@ -22,16 +20,13 @@ public class BungeeViaAPI implements ViaAPI<ProxiedPlayer> {
@Override @Override
public int getPlayerVersion(ProxiedPlayer player) { public int getPlayerVersion(ProxiedPlayer player) {
UserConnection conn = Via.getManager().getConnection(player.getUniqueId()); return getPlayerVersion(player.getUniqueId());
if (conn == null) {
return player.getPendingConnection().getVersion();
}
return conn.getProtocolInfo().getProtocolVersion();
} }
@Override @Override
public int getPlayerVersion(UUID uuid) { public int getPlayerVersion(UUID uuid) {
return getPlayerVersion(ProxyServer.getInstance().getPlayer(uuid)); UserConnection connection = Via.getManager().getConnection(uuid);
return connection != null ? connection.getProtocolInfo().getProtocolVersion() : -1;
} }
@Override @Override

Datei anzeigen

@ -17,19 +17,19 @@ import java.util.UUID;
public interface ViaAPI<T> { public interface ViaAPI<T> {
/** /**
* Get protocol number from a player * Get protocol version number from a player.
* Will also retrieve version from ProtocolSupport if it's being used. * Will also retrieve version from ProtocolSupport if it's being used.
* *
* @param player Platform player object, eg. Bukkit this is Player * @param player Platform player object, eg. Bukkit this is Player
* @return Protocol ID, For example (47=1.8-1.8.8, 107=1.9, 108=1.9.1) * @return Protocol ID, For example (47=1.8-1.8.8, 107=1.9, 108=1.9.1), or -1 if no longer connected
*/ */
int getPlayerVersion(T player); int getPlayerVersion(T player);
/** /**
* Get protocol number from a player * Get protocol number from a player.
* *
* @param uuid UUID of a player * @param uuid UUID of a player
* @return Protocol ID, For example (47=1.8-1.8.8, 107=1.9, 108=1.9.1) * @return Protocol ID, For example (47=1.8-1.8.8, 107=1.9, 108=1.9.1), or -1 if not connected
*/ */
int getPlayerVersion(UUID uuid); int getPlayerVersion(UUID uuid);

Datei anzeigen

@ -13,8 +13,9 @@ public interface EntityType {
default boolean is(EntityType... types) { default boolean is(EntityType... types) {
for (EntityType type : types) for (EntityType type : types)
if (is(type)) if (this == type) {
return true; return true;
}
return false; return false;
} }
@ -26,8 +27,9 @@ public interface EntityType {
EntityType parent = this; EntityType parent = this;
do { do {
if (parent.equals(type)) if (parent == type) {
return true; return true;
}
parent = parent.getParent(); parent = parent.getParent();
} while (parent != null); } while (parent != null);

Datei anzeigen

@ -5,7 +5,10 @@ import us.myles.ViaVersion.api.command.ViaCommandSender;
import us.myles.ViaVersion.api.command.ViaSubCommand; import us.myles.ViaVersion.api.command.ViaSubCommand;
import us.myles.ViaVersion.api.protocol.ProtocolVersion; import us.myles.ViaVersion.api.protocol.ProtocolVersion;
import java.util.*; import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class ListSubCmd extends ViaSubCommand { public class ListSubCmd extends ViaSubCommand {
@Override @Override
@ -25,23 +28,17 @@ public class ListSubCmd extends ViaSubCommand {
@Override @Override
public boolean execute(ViaCommandSender sender, String[] args) { public boolean execute(ViaCommandSender sender, String[] args) {
Map<ProtocolVersion, Set<String>> playerVersions = new TreeMap<>(new Comparator<ProtocolVersion>() { Map<ProtocolVersion, Set<String>> playerVersions = new TreeMap<>((o1, o2) -> ProtocolVersion.getIndex(o2) - ProtocolVersion.getIndex(o1));
@Override
public int compare(ProtocolVersion o1, ProtocolVersion o2) {
return ProtocolVersion.getIndex(o2) - ProtocolVersion.getIndex(o1);
}
});
for (ViaCommandSender p : Via.getPlatform().getOnlinePlayers()) { for (ViaCommandSender p : Via.getPlatform().getOnlinePlayers()) {
int playerVersion = Via.getAPI().getPlayerVersion(p.getUUID()); int playerVersion = Via.getAPI().getPlayerVersion(p.getUUID());
ProtocolVersion key = ProtocolVersion.getProtocol(playerVersion); ProtocolVersion key = ProtocolVersion.getProtocol(playerVersion);
if (!playerVersions.containsKey(key)) playerVersions.computeIfAbsent(key, s -> new HashSet<>()).add(p.getName());
playerVersions.put(key, new HashSet<String>());
playerVersions.get(key).add(p.getName());
} }
for (Map.Entry<ProtocolVersion, Set<String>> entry : playerVersions.entrySet()) for (Map.Entry<ProtocolVersion, Set<String>> entry : playerVersions.entrySet()) {
sendMessage(sender, "&8[&6%s&8] (&7%d&8): &b%s", entry.getKey().getName(), entry.getValue().size(), entry.getValue()); sendMessage(sender, "&8[&6%s&8] (&7%d&8): &b%s", entry.getKey().getName(), entry.getValue().size(), entry.getValue());
}
playerVersions.clear(); playerVersions.clear();
return true; return true;

Datei anzeigen

@ -9,7 +9,6 @@ import us.myles.ViaVersion.api.boss.BossColor;
import us.myles.ViaVersion.api.boss.BossStyle; import us.myles.ViaVersion.api.boss.BossStyle;
import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import java.util.SortedSet; import java.util.SortedSet;
import java.util.TreeSet; import java.util.TreeSet;
@ -24,9 +23,8 @@ public class SpongeViaAPI implements ViaAPI<Player> {
@Override @Override
public int getPlayerVersion(UUID uuid) { public int getPlayerVersion(UUID uuid) {
if (!isInjected(uuid)) UserConnection connection = Via.getManager().getConnection(uuid);
return ProtocolRegistry.SERVER_PROTOCOL; return connection != null ? connection.getProtocolInfo().getProtocolVersion() : -1;
return Via.getManager().getConnection(uuid).getProtocolInfo().getProtocolVersion();
} }
@Override @Override

Datei anzeigen

@ -2,7 +2,6 @@ package us.myles.ViaVersion.velocity.platform;
import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.Player;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import us.myles.ViaVersion.VelocityPlugin;
import us.myles.ViaVersion.api.Via; import us.myles.ViaVersion.api.Via;
import us.myles.ViaVersion.api.ViaAPI; import us.myles.ViaVersion.api.ViaAPI;
import us.myles.ViaVersion.api.boss.BossBar; import us.myles.ViaVersion.api.boss.BossBar;
@ -10,25 +9,22 @@ import us.myles.ViaVersion.api.boss.BossColor;
import us.myles.ViaVersion.api.boss.BossStyle; import us.myles.ViaVersion.api.boss.BossStyle;
import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.protocol.ProtocolRegistry; import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
import java.util.NoSuchElementException;
import java.util.SortedSet; import java.util.SortedSet;
import java.util.TreeSet; import java.util.TreeSet;
import java.util.UUID; import java.util.UUID;
public class VelocityViaAPI implements ViaAPI<Player> { public class VelocityViaAPI implements ViaAPI<Player> {
@Override @Override
public int getPlayerVersion(Player player) { public int getPlayerVersion(Player player) {
if (!isInjected(player.getUniqueId())) return getPlayerVersion(player.getUniqueId());
return player.getProtocolVersion().getProtocol();
return Via.getManager().getConnection(player.getUniqueId()).getProtocolInfo().getProtocolVersion();
} }
@Override @Override
public int getPlayerVersion(UUID uuid) { public int getPlayerVersion(UUID uuid) {
return getPlayerVersion(VelocityPlugin.PROXY.getPlayer(uuid).orElseThrow(NoSuchElementException::new)); UserConnection connection = Via.getManager().getConnection(uuid);
return connection != null ? connection.getProtocolInfo().getProtocolVersion() : -1;
} }
@Override @Override