CryptoMorin / XSeries

Library for cross-version Minecraft Bukkit support and various efficient API methods.
https://www.spigotmc.org/threads/378136/
MIT License
390 stars 128 forks source link

[XItemStack] - 1.16.5 IllegalAccessException: class is not public: net.minecraft.server.v1_16_R3.UserCache$UserCacheEntry.getProfile #281

Closed david-morales-denox closed 2 months ago

david-morales-denox commented 3 months ago

Recently I receive two reports of my plugin with the same errors, thats the stacktrace: java.lang.RuntimeException: Unable to set profile com.mojang.authlib.GameProfile@7ab1c086[id=64a88149-a906-37d2-bf7f-db5b262bb2aa,name=XSeries,properties={XSeries=[com.mojang.authlib.properties.Property@62977231], textures=[com.mojang.authlib.properties.Property@5817782e]},legacy=false] to SKULL_META:{meta-type=SKULL} at com.cryptomorin.xseries.profiles.objects.ProfileContainer$ItemMetaProfileContainer.setProfile(ProfileContainer.java:64) ~[?:?] at com.cryptomorin.xseries.profiles.builder.ProfileInstruction.apply(ProfileInstruction.java:160) ~[?:?] at com.cryptomorin.xseries.XItemStack.edit(XItemStack.java:662) ~[?:?] at com.cryptomorin.xseries.XItemStack.deserialize(XItemStack.java:455) ~[?:?] at me.davidml16.acubelets.handlers.CubeletRewardHandler.loadReward(CubeletRewardHandler.java:65) ~[?:?] at me.davidml16.acubelets.handlers.CubeletRewardHandler.loadRewards(CubeletRewardHandler.java:37) ~[?:?] at me.davidml16.acubelets.Main.onEnable(Main.java:158) ~[?:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.16.5.jar:git-Purpur-1171] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.16.5.jar:git-Purpur-1171] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.16.5.jar:git-Purpur-1171] at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:518) ~[patched_1.16.5.jar:git-Purpur-1171] at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:432) ~[patched_1.16.5.jar:git-Purpur-1171] at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:596) ~[patched_1.16.5.jar:git-Purpur-1171] at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:309) ~[patched_1.16.5.jar:git-Purpur-1171] at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1074) ~[patched_1.16.5.jar:git-Purpur-1171] at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:293) ~[patched_1.16.5.jar:git-Purpur-1171] at java.lang.Thread.run(Thread.java:840) [?:?] Caused by: java.lang.ExceptionInInitializerError at com.cryptomorin.xseries.profiles.objects.ProfileContainer$ItemMetaProfileContainer.setProfile(ProfileContainer.java:62) ~[?:?] ... 16 more Caused by: java.lang.IllegalAccessException: class is not public: net.minecraft.server.v1_16_R3.UserCache$UserCacheEntry.getProfile[Ljava.lang.Object;@35a011f6/invokeVirtual, from class com.cryptomorin.xseries.reflection.jvm.ReflectiveNamespace (unnamed module @2205f336) at java.lang.invoke.MemberName.makeAccessException(MemberName.java:955) ~[?:?] at java.lang.invoke.MethodHandles$Lookup.checkAccess(MethodHandles.java:3882) ~[?:?] at java.lang.invoke.MethodHandles$Lookup.checkMethod(MethodHandles.java:3822) ~[?:?] at java.lang.invoke.MethodHandles$Lookup.getDirectMethodCommon(MethodHandles.java:3967) ~[?:?] at java.lang.invoke.MethodHandles$Lookup.getDirectMethodNoSecurityManager(MethodHandles.java:3960) ~[?:?] at java.lang.invoke.MethodHandles$Lookup.unreflect(MethodHandles.java:3350) ~[?:?] at com.cryptomorin.xseries.reflection.jvm.MethodMemberHandle.reflect(MethodMemberHandle.java:50) ~[?:?] at com.cryptomorin.xseries.reflection.jvm.MethodMemberHandle.reflect(MethodMemberHandle.java:16) ~[?:?] at com.cryptomorin.xseries.reflection.Handle.unreflect(Handle.java:24) ~[?:?] at com.cryptomorin.xseries.profiles.ProfilesCore.<clinit>(ProfilesCore.java:171) ~[?:?] at com.cryptomorin.xseries.profiles.objects.ProfileContainer$ItemMetaProfileContainer.setProfile(ProfileContainer.java:62) ~[?:?]

CryptoMorin commented 3 months ago
  1. You didn't specify what XSeries version you're using.
  2. You didn't give any minimal reproducible code. (It shouldn't involve configs)
  3. Please don't put stacktraces in single quote blocks put them in triple quote blocks because with the single backticks, it becomes a single line and that's really unreadable.

But since it has something to do with XSkull specifically, I tried the following code in 1.16.5 and I can't reproduce it:

player.getInventory().addItem(XSkull.createItem().profile(Profileable.username("Notch")).apply());