Mirror von
https://github.com/ViaVersion/ViaVersion.git
synchronisiert 2024-12-26 16:12:42 +01:00
Add more versions & use ProtocolSupport API if not ported.
Dieser Commit ist enthalten in:
Ursprung
d1da412cf7
Commit
44e8056fb3
@ -9,7 +9,6 @@ import lombok.Getter;
|
|||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.Plugin;
|
|
||||||
import org.bukkit.plugin.PluginDescriptionFile;
|
import org.bukkit.plugin.PluginDescriptionFile;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import us.myles.ViaVersion.api.Pair;
|
import us.myles.ViaVersion.api.Pair;
|
||||||
@ -29,6 +28,7 @@ import us.myles.ViaVersion.protocols.base.ProtocolInfo;
|
|||||||
import us.myles.ViaVersion.update.UpdateListener;
|
import us.myles.ViaVersion.update.UpdateListener;
|
||||||
import us.myles.ViaVersion.update.UpdateUtil;
|
import us.myles.ViaVersion.update.UpdateUtil;
|
||||||
import us.myles.ViaVersion.util.ListWrapper;
|
import us.myles.ViaVersion.util.ListWrapper;
|
||||||
|
import us.myles.ViaVersion.util.ProtocolSupportUtil;
|
||||||
import us.myles.ViaVersion.util.ReflectionUtil;
|
import us.myles.ViaVersion.util.ReflectionUtil;
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
@ -338,17 +338,25 @@ public class ViaVersionPlugin extends JavaPlugin implements ViaVersionAPI {
|
|||||||
@Override
|
@Override
|
||||||
public int getPlayerVersion(@NonNull Player player) {
|
public int getPlayerVersion(@NonNull Player player) {
|
||||||
if (!isPorted(player))
|
if (!isPorted(player))
|
||||||
return ProtocolRegistry.SERVER_PROTOCOL;
|
return getExternalVersion(player);
|
||||||
return portedPlayers.get(player.getUniqueId()).get(ProtocolInfo.class).getProtocolVersion();
|
return portedPlayers.get(player.getUniqueId()).get(ProtocolInfo.class).getProtocolVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getPlayerVersion(@NonNull UUID uuid) {
|
public int getPlayerVersion(@NonNull UUID uuid) {
|
||||||
if (!isPorted(uuid))
|
if (!isPorted(uuid))
|
||||||
return ProtocolRegistry.SERVER_PROTOCOL;
|
return getExternalVersion(Bukkit.getPlayer(uuid));
|
||||||
return portedPlayers.get(uuid).get(ProtocolInfo.class).getProtocolVersion();
|
return portedPlayers.get(uuid).get(ProtocolInfo.class).getProtocolVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getExternalVersion(Player player) {
|
||||||
|
if (!isProtocolSupport()) {
|
||||||
|
return ProtocolRegistry.SERVER_PROTOCOL;
|
||||||
|
} else {
|
||||||
|
return ProtocolSupportUtil.getProtocolVersion(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isPorted(UUID playerUUID) {
|
public boolean isPorted(UUID playerUUID) {
|
||||||
return portedPlayers.containsKey(playerUUID);
|
return portedPlayers.containsKey(playerUUID);
|
||||||
|
@ -21,6 +21,7 @@ public interface ViaVersionAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get protocol number from a player
|
* Get protocol number from a player
|
||||||
|
* Will also retrieve version from ProtocolSupport if it's being used.
|
||||||
*
|
*
|
||||||
* @param player Bukkit player object
|
* @param player Bukkit player object
|
||||||
* @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)
|
||||||
@ -120,8 +121,9 @@ public interface ViaVersionAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets if the server uses spigot
|
* Gets if the server uses spigot
|
||||||
*
|
* <p>
|
||||||
* Note: Will only work after ViaVersion load
|
* Note: Will only work after ViaVersion load
|
||||||
|
*
|
||||||
* @return True if spigot
|
* @return True if spigot
|
||||||
*/
|
*/
|
||||||
boolean isSpigot();
|
boolean isSpigot();
|
||||||
|
@ -9,6 +9,13 @@ import java.util.*;
|
|||||||
public class ProtocolVersion {
|
public class ProtocolVersion {
|
||||||
private static final Map<Integer, ProtocolVersion> versions = new HashMap<>();
|
private static final Map<Integer, ProtocolVersion> versions = new HashMap<>();
|
||||||
|
|
||||||
|
public static final ProtocolVersion v1_4_6;
|
||||||
|
public static final ProtocolVersion v1_5_1;
|
||||||
|
public static final ProtocolVersion v1_5_2;
|
||||||
|
public static final ProtocolVersion v_1_6_1;
|
||||||
|
public static final ProtocolVersion v_1_6_2;
|
||||||
|
public static final ProtocolVersion v_1_6_3;
|
||||||
|
public static final ProtocolVersion v_1_6_4;
|
||||||
public static final ProtocolVersion v1_7_1;
|
public static final ProtocolVersion v1_7_1;
|
||||||
public static final ProtocolVersion v1_7_6;
|
public static final ProtocolVersion v1_7_6;
|
||||||
public static final ProtocolVersion v1_8;
|
public static final ProtocolVersion v1_8;
|
||||||
@ -17,11 +24,21 @@ public class ProtocolVersion {
|
|||||||
public static final ProtocolVersion v1_9_2;
|
public static final ProtocolVersion v1_9_2;
|
||||||
public static final ProtocolVersion v1_9_3;
|
public static final ProtocolVersion v1_9_3;
|
||||||
public static final ProtocolVersion v1_10;
|
public static final ProtocolVersion v1_10;
|
||||||
|
public static final ProtocolVersion unknown;
|
||||||
|
|
||||||
private final int id;
|
private final int id;
|
||||||
private final String name;
|
private final String name;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
// Before netty rewrite
|
||||||
|
register(v1_4_6 = new ProtocolVersion(51, "1.4.6"));
|
||||||
|
register(v1_5_1 = new ProtocolVersion(60, "1.5.1"));
|
||||||
|
register(v1_5_2 = new ProtocolVersion(61, "1.5.2"));
|
||||||
|
register(v_1_6_1 = new ProtocolVersion(73, "1.6.1"));
|
||||||
|
register(v_1_6_2 = new ProtocolVersion(74, "1.6.2"));
|
||||||
|
register(v_1_6_3 = new ProtocolVersion(77, "1.6.3"));
|
||||||
|
register(v_1_6_4 = new ProtocolVersion(78, "1.6.4"));
|
||||||
|
// After netty rewrite
|
||||||
register(v1_7_1 = new ProtocolVersion(4, "1.7-1.7.5"));
|
register(v1_7_1 = new ProtocolVersion(4, "1.7-1.7.5"));
|
||||||
register(v1_7_6 = new ProtocolVersion(5, "1.7.6-1.7.10"));
|
register(v1_7_6 = new ProtocolVersion(5, "1.7.6-1.7.10"));
|
||||||
register(v1_8 = new ProtocolVersion(47, "1.8.x"));
|
register(v1_8 = new ProtocolVersion(47, "1.8.x"));
|
||||||
@ -30,6 +47,7 @@ public class ProtocolVersion {
|
|||||||
register(v1_9_2 = new ProtocolVersion(109, "1.9.2"));
|
register(v1_9_2 = new ProtocolVersion(109, "1.9.2"));
|
||||||
register(v1_9_3 = new ProtocolVersion(110, "1.9.3/4"));
|
register(v1_9_3 = new ProtocolVersion(110, "1.9.3/4"));
|
||||||
register(v1_10 = new ProtocolVersion(210, "1.10"));
|
register(v1_10 = new ProtocolVersion(210, "1.10"));
|
||||||
|
register(unknown = new ProtocolVersion(-1, "UNKNOWN"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void register(@NonNull ProtocolVersion protocol) {
|
public static void register(@NonNull ProtocolVersion protocol) {
|
||||||
|
33
src/main/java/us/myles/ViaVersion/util/ProtocolSupportUtil.java
Normale Datei
33
src/main/java/us/myles/ViaVersion/util/ProtocolSupportUtil.java
Normale Datei
@ -0,0 +1,33 @@
|
|||||||
|
package us.myles.ViaVersion.util;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
static {
|
||||||
|
try {
|
||||||
|
protocolVersionMethod = Class.forName("protocolsupport.api.ProtocolSupportAPI").getMethod("getProtocolVersion", Player.class);
|
||||||
|
getIdMethod = Class.forName("protocolsupport.api.ProtocolVersion").getMethod("getId");
|
||||||
|
} catch (Exception e) {
|
||||||
|
// ProtocolSupport not installed.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getProtocolVersion(Player player) {
|
||||||
|
if (protocolVersionMethod == null) return -1;
|
||||||
|
try {
|
||||||
|
Object version = protocolVersionMethod.invoke(null, player);
|
||||||
|
return (int) getIdMethod.invoke(version);
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren