diff --git a/nms/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java b/nms/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java index da4fb8e3..f5086b49 100644 --- a/nms/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java +++ b/nms/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java @@ -262,10 +262,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/nms/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18_1/ReflectionManager.java b/nms/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18_1/ReflectionManager.java index e8266a8d..0a91e6f5 100644 --- a/nms/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18_1/ReflectionManager.java +++ b/nms/v1_18_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18_1/ReflectionManager.java @@ -262,10 +262,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/nms/v1_18_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18_2/ReflectionManager.java b/nms/v1_18_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18_2/ReflectionManager.java index 9b7835b6..56be977a 100644 --- a/nms/v1_18_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18_2/ReflectionManager.java +++ b/nms/v1_18_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_18_2/ReflectionManager.java @@ -20,7 +20,6 @@ import me.libraryaddict.disguise.utilities.reflection.ReflectionManagerAbstract; import net.minecraft.core.BlockPos; import net.minecraft.core.Registry; import net.minecraft.core.Vector3f; -import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.protocol.game.ClientboundPlayerInfoPacket; import net.minecraft.network.syncher.EntityDataAccessor; @@ -263,10 +262,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/nms/v1_19_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R1/ReflectionManager.java b/nms/v1_19_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R1/ReflectionManager.java index 53ad93fd..74cbd948 100644 --- a/nms/v1_19_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R1/ReflectionManager.java +++ b/nms/v1_19_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R1/ReflectionManager.java @@ -269,10 +269,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/nms/v1_19_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R2/ReflectionManager.java b/nms/v1_19_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R2/ReflectionManager.java index 42c95adb..1c59aa69 100644 --- a/nms/v1_19_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R2/ReflectionManager.java +++ b/nms/v1_19_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R2/ReflectionManager.java @@ -319,10 +319,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/nms/v1_19_R3/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R3/ReflectionManager.java b/nms/v1_19_R3/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R3/ReflectionManager.java index 30545c2f..59dbb83c 100644 --- a/nms/v1_19_R3/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R3/ReflectionManager.java +++ b/nms/v1_19_R3/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_19_R3/ReflectionManager.java @@ -314,10 +314,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/nms/v1_20_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R1/ReflectionManager.java b/nms/v1_20_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R1/ReflectionManager.java index 9c302a0e..3a578d47 100644 --- a/nms/v1_20_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R1/ReflectionManager.java +++ b/nms/v1_20_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R1/ReflectionManager.java @@ -315,10 +315,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true)); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/nms/v1_20_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R2/ReflectionManager.java b/nms/v1_20_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R2/ReflectionManager.java index 91bd54d7..9805689c 100644 --- a/nms/v1_20_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R2/ReflectionManager.java +++ b/nms/v1_20_R2/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R2/ReflectionManager.java @@ -318,10 +318,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fetchProfile(gameProfile.getUUID(), true).profile()); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/nms/v1_20_R3/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R3/ReflectionManager.java b/nms/v1_20_R3/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R3/ReflectionManager.java index 13540326..22eee500 100644 --- a/nms/v1_20_R3/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R3/ReflectionManager.java +++ b/nms/v1_20_R3/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_20_R3/ReflectionManager.java @@ -319,10 +319,8 @@ public class ReflectionManager implements ReflectionManagerAbstract { return new float[]{dimensions.width, nmsEntity.getEyeHeight()}; } - public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - DedicatedServer minecraftServer = getMinecraftServer(); - MinecraftSessionService sessionService = minecraftServer.getSessionService(); - return WrappedGameProfile.fromHandle(sessionService.fetchProfile(gameProfile.getUUID(), true).profile()); + public MinecraftSessionService getMinecraftSessionService() { + return getMinecraftServer().getSessionService(); } public Float getSoundModifier(Object entity) { diff --git a/plugin/pom.xml b/plugin/pom.xml index 415ad0d8..7006edf9 100644 --- a/plugin/pom.xml +++ b/plugin/pom.xml @@ -277,7 +277,7 @@ com.mojang authlib - 3.5.41 + 5.0.51 provided diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java index f83d3d29..fe0eca54 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/LibsProfileLookupCaller.java @@ -3,16 +3,17 @@ package me.libraryaddict.disguise.utilities.reflection; import com.comphenix.protocol.wrappers.WrappedGameProfile; import com.mojang.authlib.GameProfile; import com.mojang.authlib.ProfileLookupCallback; +import lombok.Getter; +@Getter public class LibsProfileLookupCaller implements ProfileLookupCallback { - private WrappedGameProfile gameProfile; - public WrappedGameProfile getGameProfile() { - return gameProfile; + @Override + public void onProfileLookupFailed(String s, Exception e) { } - @Override + @Deprecated public void onProfileLookupFailed(GameProfile gameProfile, Exception arg1) { } diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java index adf3a00a..52d3560b 100644 --- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java +++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java @@ -17,6 +17,7 @@ import com.comphenix.protocol.wrappers.WrappedParticle; import com.comphenix.protocol.wrappers.WrappedWatchableObject; import com.comphenix.protocol.wrappers.nbt.NbtWrapper; import com.mojang.authlib.GameProfile; +import com.mojang.authlib.minecraft.MinecraftSessionService; import lombok.Getter; import lombok.SneakyThrows; import me.libraryaddict.disguise.DisguiseConfig; @@ -194,6 +195,7 @@ public class ReflectionManager { private static Field trackedPlayers; private static Method clearEntityTracker; private static Method addEntityTracker; + private static Method fillProfileProperties; public static void init() { try { @@ -369,6 +371,15 @@ public class ReflectionManager { entitiesField = getNmsField("EntityTracker", "trackedEntities"); ihmGet = getNmsMethod("IntHashMap", "get", int.class); } + + for (Method m : MinecraftSessionService.class.getMethods()) { + if (!m.getName().equals("fillProfileProperties")) { + continue; + } + + fillProfileProperties = m; + break; + } } public static boolean hasInvul(Entity entity) { @@ -1259,22 +1270,26 @@ public class ReflectionManager { } public static WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) { - if (nmsReflection != null) { - return nmsReflection.getSkullBlob(gameProfile); - } - try { - Object minecraftServer = getMinecraftServer(); + MinecraftSessionService service = null; - for (Method method : getNmsClass("MinecraftServer").getMethods()) { - if (method.getReturnType().getSimpleName().equals("MinecraftSessionService")) { - Object session = method.invoke(minecraftServer); + if (nmsReflection != null) { + service = nmsReflection.getMinecraftSessionService(); + } else { + Object minecraftServer = getMinecraftServer(); - return WrappedGameProfile.fromHandle( - session.getClass().getDeclaredMethod("fillProfileProperties", gameProfile.getHandleType(), boolean.class) - .invoke(session, gameProfile.getHandle(), true)); + for (Method method : getNmsClass("MinecraftServer").getMethods()) { + if (method.getReturnType().getSimpleName().equals("MinecraftSessionService")) { + service = (MinecraftSessionService) method.invoke(minecraftServer); + } } } + + if (fillProfileProperties == null) { + return WrappedGameProfile.fromHandle(service.fetchProfile(gameProfile.getUUID(), true).profile()); + } + + return WrappedGameProfile.fromHandle(fillProfileProperties.invoke(service, gameProfile.getHandle(), true)); } catch (Exception ex) { ex.printStackTrace(); } diff --git a/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java b/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java index 9830c582..9c14440a 100644 --- a/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java +++ b/shared/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManagerAbstract.java @@ -6,6 +6,7 @@ import com.comphenix.protocol.wrappers.EnumWrappers; import com.comphenix.protocol.wrappers.WrappedDataWatcher; import com.comphenix.protocol.wrappers.WrappedGameProfile; import com.mojang.authlib.ProfileLookupCallback; +import com.mojang.authlib.minecraft.MinecraftSessionService; import org.bukkit.Art; import org.bukkit.Material; import org.bukkit.NamespacedKey; @@ -82,7 +83,7 @@ public interface ReflectionManagerAbstract { float[] getSize(Entity entity); - WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile); + MinecraftSessionService getMinecraftSessionService(); Float getSoundModifier(Object entity);