More minor refactoring

This commit is contained in:
Nassim Jahnke 2022-11-10 13:32:25 +01:00
parent 85f9414b95
commit a3080800b0
No known key found for this signature in database
GPG Key ID: 6BE3B555EBC5982B
3 changed files with 22 additions and 16 deletions

View File

@ -43,14 +43,17 @@ public class BukkitViaAPI extends ViaAPIBase<Player> {
@Override
public int getPlayerVersion(UUID uuid) {
UserConnection connection = Via.getManager().getConnectionManager().getConnectedClient(uuid);
if (connection == null) {
if (connection != null) {
return connection.getProtocolInfo().getProtocolVersion();
}
if (isProtocolSupport()) {
Player player = Bukkit.getPlayer(uuid);
if (player != null && isProtocolSupport()) {
if (player != null) {
return ProtocolSupportUtil.getProtocolVersion(player);
}
return -1;
}
return connection.getProtocolInfo().getProtocolVersion();
return -1;
}
@Override
@ -66,5 +69,4 @@ public class BukkitViaAPI extends ViaAPIBase<Player> {
public boolean isProtocolSupport() {
return plugin.isProtocolSupport();
}
}

View File

@ -19,7 +19,7 @@ package com.viaversion.viaversion.bukkit.util;
import org.bukkit.Bukkit;
public class NMSUtil {
public final class NMSUtil {
private static final String BASE = Bukkit.getServer().getClass().getPackage().getName();
private static final String NMS = BASE.replace("org.bukkit.craftbukkit", "net.minecraft.server");
private static final boolean DEBUG_PROPERTY = loadDebugProperty();

View File

@ -22,27 +22,31 @@ import org.bukkit.entity.Player;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ProtocolSupportUtil {
private static Method protocolVersionMethod = null;
private static Method getIdMethod = null;
public final class ProtocolSupportUtil {
private static final Method PROTOCOL_VERSION_METHOD;
private static final Method GET_ID_METHOD;
static {
Method protocolVersionMethod = null;
Method getIdMethod = null;
try {
protocolVersionMethod = Class.forName("protocolsupport.api.ProtocolSupportAPI").getMethod("getProtocolVersion", Player.class);
getIdMethod = Class.forName("protocolsupport.api.ProtocolVersion").getMethod("getId");
} catch (Exception e) {
} catch (ReflectiveOperationException e) {
// ProtocolSupport not installed.
}
PROTOCOL_VERSION_METHOD = protocolVersionMethod;
GET_ID_METHOD = getIdMethod;
}
public static int getProtocolVersion(Player player) {
if (protocolVersionMethod == null) return -1;
if (PROTOCOL_VERSION_METHOD == null) {
return -1;
}
try {
Object version = protocolVersionMethod.invoke(null, player);
return (int) getIdMethod.invoke(version);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
Object version = PROTOCOL_VERSION_METHOD.invoke(null, player);
return (int) GET_ID_METHOD.invoke(version);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
return -1;