juliarn / npc-lib

Asynchronous, high-performance Minecraft NPC library for 1.8-1.21 servers.
MIT License
320 stars 50 forks source link

NoSuchMethodException: java.util.Collections$SingletonList.<init>() ????? #52

Closed aematsubara closed 2 years ago

aematsubara commented 2 years ago

Hi everyone, I'm having the following error when trying to change the equipment of an NPC

`[WARNING] .... java.lang.NoSuchMethodException: java.util.Collections$SingletonList.()

[WARNING] .... at java.base/java.lang.Class.newNoSuchMethodException(Unknown Source)

[WARNING] .... at java.base/java.lang.Class.getConstructor(Unknown Source)

[WARNING] .... at ProtocolLib.jar//com.comphenix.protocol.wrappers.BukkitConverters.getGenericList(BukkitConverters.java:277)

[WARNING] .... at ProtocolLib.jar//com.comphenix.protocol.wrappers.BukkitConverters.access$100(BukkitConverters.java:88)

[WARNING] .... at ProtocolLib.jar//com.comphenix.protocol.wrappers.BukkitConverters$3.getGeneric(BukkitConverters.java:367)

[WARNING] .... at ProtocolLib.jar//com.comphenix.protocol.wrappers.BukkitConverters$3.getGeneric(BukkitConverters.java:359)

[WARNING] .... at ProtocolLib.jar//com.comphenix.protocol.wrappers.Converters$1.getGeneric(Converters.java:48)

[WARNING] .... at ProtocolLib.jar//com.comphenix.protocol.reflect.StructureModifier.writeInternal(StructureModifier.java:372)

[WARNING] .... at ProtocolLib.jar//com.comphenix.protocol.reflect.StructureModifier.write(StructureModifier.java:345)

[WARNING] .... at Roulette-1.0-SNAPSHOT.jar//me.matsubara.roulette.util.npc.modifier.EquipmentModifier.queue(EquipmentModifier.java:93)

[WARNING] .... at Roulette-1.0-SNAPSHOT.jar//me.matsubara.roulette.game.Game$1.handleSpawn(Game.java:126)

[WARNING] .... at Roulette-1.0-SNAPSHOT.jar//me.matsubara.roulette.util.npc.NPC.lambda$show$1(NPC.java:99)

[WARNING] .... at Roulette-1.0-SNAPSHOT.jar//me.matsubara.roulette.util.npc.NPC$$Lambda$5393/0x00000000ed443a50.run(Unknown Source)

[WARNING] .... at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftTask.run(CraftTask.java:101)

[WARNING] .... at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:483)

[WARNING] .... at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1564)

[WARNING] .... at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:490)

[WARNING] .... at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1480)

[WARNING] .... at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1279)

[WARNING] .... at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319)

[WARNING] .... at net.minecraft.server.MinecraftServer$$Lambda$3659/0x00000000724037d8.run(Unknown Source)

[WARNING] .... at java.base/java.lang.Thread.run(Unknown Source)`

this is how I create the NPC

`this.npc = NPC.builder() .profile(new Profile( UUID.randomUUID(), npcName, Collections.singletonList(new Profile.Property( "textures", "ewogICJ0aW1lc3RhbXAiIDogMTU5NDA2NDIyNDkzOCwKICAicHJvZmlsZUlkIiA6ICJhMjk1ODZmYmU1ZDk0Nzk2OWZjOGQ4ZGE0NzlhNDNlZSIsCiAgInByb2ZpbGVOYW1lIiA6ICJWaWVydGVsdG9hc3RpaWUiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDcyOGJkYWI5ZDkwMTI0YmQxMWY4NmU1OTM3MzJkMmRjNWQ3NzY3YTYzZGE4MGQ3M2ZkYmM0NDU2NTY2YzcwMSIKICAgIH0KICB9Cn0=", "pMYGvxZzmEApm46xoRqwc8Ftd0LRzzjyMwCiuxhx5avmKVbZUDsDKoB/QPpwz8gof5kpR6m3aboy6LN17XU4JJ3IHp776dkBfNkPieVs+pyNhgXhMaqLmxGk1QlmdLI/pDSfTELoFpF/73LNdFOnGPwmuCSmn7Bt1OQtNWsoYtWHbpm5CkSo89ssRbZSYmn4VJVJPFfdHre3kJyRqIpSE6BIrCxMrJdyMeneK7KmF4ykZ6aZNle8x86X3gImc81EYbSm/8Ax+0vsvLYDRFKbUUg0tjaAHONaYqfrnyJTxxcCWeBI9yyeDNuGwi3cCdKTb73OVhC0HG5Vw0VEnX8Ti51dJASeAFQaLTOGAqaiwseX+wEbFbDlU4gzaFfe8AvVZcegksnZlY7wMzr/KkTetSjz/8eArfj4A8bgmtyEOUc1YxGqym35GsqZSQkqxXtgoX/0QRMNwEHEmurruSkR5Tn5WwbN6HoIT3QASokvvJO73D9Tn7sAuSitlU97lnB4fQTQj/3/ePbQ6zrkp5uGhUDyauY9aCCd5ySJ/7KpLd1lEBT+WrsriLezZ1xG37M82dOALuacLzQPJkz4+5hZbIj2e5D8ALp65AtFxJju2Zfk5gXmv2kmgeF8fAw11hHHok+gfo3eesbF1i0SvKaEGDcf+7Nxs3eU88aSmfoh77I=")))) .location(npcLoc) .lookAtPlayer(false) .imitatePlayer(false) .spawnCustomizer(new SpawnCustomizer() { @Override public void handleSpawn(@NotNull NPC npc, @NotNull Player player) { npc.rotation().queueRotate(npcLoc.getYaw(), npcLoc.getPitch()).send(player);

                    // Set item (ball) in main hand.
                    if (!state.isSpinning() && !state.isEnding()) {
                        npc.equipment().queue(EnumWrappers.ItemSlot.MAINHAND, XMaterial.SNOWBALL.parseItem()).send(player); <----- ERROR
                    }
                    // Show skin layers.
                    npc.metadata().queue(MetadataModifier.EntityMetadata.SKIN_LAYERS, true).send(player);
                }
            })
            .build(plugin.getNPCPool());`

System Info: Java 16 (Eclipse OpenJ9 VM openj9-0.26.0) Host: Linux 4.15.0-159-generic (amd64) This server is running Paper version git-Paper-358 (MC: 1.17.1) (Implementing API version 1.17.1-R0.1-SNAPSHOT) (Git: 3f043f7)

I also tried in my plugin onEnable() method creating a singleton list with Collections#singletonList("TEST") and I have not problems, only happens when trying to change the equipment.

This also happens when using spigot btw.

PD: Sorry, I don't know how to put the code in blocks :/

juliarn commented 2 years ago

Hey, please update to the latest version of ProtocolLib, it should work with that.

aematsubara commented 2 years ago

Tried too, still happens.

This error is weird... the equipment works, and that error only happens once. For now I'll put that line in a try/catch ignore and leave it there, never had this problem :| Thanks for the help!

aematsubara commented 2 years ago

Sorry, this was a ProtocolLib issue, I looked at ProtocolLib repo issues and found this https://github.com/dmulloy2/ProtocolLib/issues/1422, thanks for your help!