Solved ClassNotFoundException: EnumClientCommand

Discussion in 'Plugin Development' started by WolfMage1, Aug 13, 2016.

Thread Status:
Not open for further replies.
  1. Offline

    WolfMage1

    Server Log (open)

    [19:22:10] [Server thread/WARN]: java.lang.ClassNotFoundException: net.minecraft.server.v1_8_R3.EnumClientCommand
    [19:22:10] [Server thread/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:91)
    [19:22:10] [Server thread/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86)
    [19:22:10] [Server thread/WARN]: at java.lang.ClassLoader.loadClass(Unknown Source)
    [19:22:10] [Server thread/WARN]: at java.lang.ClassLoader.loadClass(Unknown Source)
    [19:22:10] [Server thread/WARN]: at java.lang.Class.forName0(Native Method)
    [19:22:10] [Server thread/WARN]: at java.lang.Class.forName(Unknown Source)
    [19:22:10] [Server thread/WARN]: at me.martinitslinda.infected.listener.DeathListener.onEntityDeath(DeathListener.java:51)
    [19:22:10] [Server thread/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [19:22:10] [Server thread/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    [19:22:10] [Server thread/WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    [19:22:10] [Server thread/WARN]: at java.lang.reflect.Method.invoke(Unknown Source)
    [19:22:10] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306)
    [19:22:10] [Server thread/WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    [19:22:10] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502)
    [19:22:10] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487)
    [19:22:10] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:396)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityPlayer.die(EntityPlayer.java:417)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:812)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityHuman.damageEntity(EntityHuman.java:800)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityPlayer.damageEntity(EntityPlayer.java:496)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityHuman.attack(EntityHuman.java:1001)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityPlayer.attack(EntityPlayer.java:1063)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1355)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13)
    [19:22:10] [Server thread/WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    [19:22:10] [Server thread/WARN]: at java.util.concurrent.FutureTask.run(Unknown Source)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654)
    [19:22:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557)
    [19:22:10] [Server thread/WARN]: at java.lang.Thread.run(Unknown Source)


    Code:
    String bukkitversion = Bukkit.getServer().getClass()
                            .getPackage().getName().substring(23);
                    Class<?> cp = Class.forName("org.bukkit.craftbukkit."
                            + bukkitversion + ".entity.CraftPlayer");
                    Class<?> clientcmd = Class.forName("net.minecraft.server."
                            + bukkitversion + ".PacketPlayInClientCommand");
                    Class enumClientCMD = Class.forName("net.minecraft.server."
                            + bukkitversion + ".EnumClientCommand");
                    Method handle = cp.getDeclaredMethod("getHandle", null);
                    Object entityPlayer = handle.invoke(player, null);
                    Constructor<?> packetConstr = clientcmd
                            .getDeclaredConstructor(enumClientCMD);
                    Enum<?> num = Enum.valueOf(enumClientCMD, "PERFORM_RESPAWN");
                    Object packet = packetConstr.newInstance(num);
                    Object playerConnection = entityPlayer.getClass()
                            .getDeclaredField("playerConnection").get(entityPlayer);
                    Method send = playerConnection.getClass().getDeclaredMethod("a",
                            clientcmd);
                    send.invoke(playerConnection, packet);
    Current method for auto respawning provided by @mine-care .

    Tried having a look at package names and as far as I can see its still the same.
     
  2. Offline

    I Al Istannen

    @WolfMage1
    I think it should be:

    "net.minecraft.server." + bukkitversion + ".PacketPlayInClientCommand.EnumClientCommand"


    instead of

    "net.minecraft.server." + bukkitversion + ".EnumClientCommand"

    Haven't tried though. You can probably also get it by using the "getDeclaredClasses" method on the "clientcmd" class.
     
  3. Offline

    WolfMage1

    Latest Error (open)
    .
    [19:41:10] [Server thread/WARN]: java.lang.ClassNotFoundException: net.minecraft.server.v1_8_R3.PacketPlayInClientCommand.EnumClientCommand
    [19:41:10] [Server thread/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:91)
    [19:41:10] [Server thread/WARN]: at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:86)
    [19:41:10] [Server thread/WARN]: at java.lang.ClassLoader.loadClass(Unknown Source)
    [19:41:10] [Server thread/WARN]: at java.lang.ClassLoader.loadClass(Unknown Source)
    [19:41:10] [Server thread/WARN]: at java.lang.Class.forName0(Native Method)
    [19:41:10] [Server thread/WARN]: at java.lang.Class.forName(Unknown Source)
    [19:41:10] [Server thread/WARN]: at me.martinitslinda.infected.listener.DeathListener.onEntityDeath(DeathListener.java:51)
    [19:41:10] [Server thread/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [19:41:10] [Server thread/WARN]: at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    [19:41:10] [Server thread/WARN]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    [19:41:10] [Server thread/WARN]: at java.lang.reflect.Method.invoke(Unknown Source)
    [19:41:10] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306)
    [19:41:10] [Server thread/WARN]: at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
    [19:41:10] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502)
    [19:41:10] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487)
    [19:41:10] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:396)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityPlayer.die(EntityPlayer.java:417)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityLiving.damageEntity(EntityLiving.java:812)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityHuman.damageEntity(EntityHuman.java:800)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityPlayer.damageEntity(EntityPlayer.java:496)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityHuman.attack(EntityHuman.java:1001)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.EntityPlayer.attack(EntityPlayer.java:1063)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1355)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:52)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PacketPlayInUseEntity.a(SourceFile:11)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13)
    [19:41:10] [Server thread/WARN]: at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    [19:41:10] [Server thread/WARN]: at java.util.concurrent.FutureTask.run(Unknown Source)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:715)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654)
    [19:41:10] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557)
    [19:41:10] [Server thread/WARN]: at java.lang.Thread.run(Unknown Source)


    Also, Currently running 1.8.8 spigot.
     
  4. Offline

    HeartandSoul

    I've never tried, but I don't think you'd find bukkit packages in spigot?
     
  5. Offline

    I Al Istannen

    @WolfMage1
    I am dumb. It is:
    as it is an inner class... Just replace the last "." with an "$".
     
    mine-care and WolfMage1 like this.
  6. Offline

    mine-care

    @HeartandSoul Spigot is essentially tweaked bukkit with aditions, so you would definately find all bukkit packages there.

    @WolfMage1 The class is a litle bit out of date :( Still i recomend you use the second piece of code provided in my post, it seems much simpler ;)
     
Thread Status:
Not open for further replies.

Share This Page