Kicking player error

Discussion in 'Plugin Development' started by douglas_srs, Dec 28, 2011.

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

    douglas_srs

    Hey, I'm current getting this error on console when kicking an AFK player with my plugin, the player gets kicked successfully but I don't know about this error :/

    Code:
    2011-12-28 22:45:26 [WARNING] Could not properly handle event PLAYER_KICK:
    java.lang.IllegalAccessError: Synchronized code got accessed from another thread: com.douglas_srs.AfkManager.AfkManager$1
        at org.bukkit.event.player.PlayerListener.onPlayerKick(PlayerListener:0)
        at org.bukkit.plugin.java.JavaPluginLoader$4.execute(JavaPluginLoader.java:286)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:339)
        at net.minecraft.server.NetServerHandler.disconnect(NetServerHandler.java:107)
        at org.getspout.spout.SpoutNetServerHandler.disconnect(SpoutNetServerHandler.java:560)
        at org.bukkit.craftbukkit.entity.CraftPlayer.kickPlayer(CraftPlayer.java:185)
        at com.douglas_srs.AfkManager.AfkManager$1.run(AfkManager.java:89)
        at org.bukkit.craftbukkit.scheduler.CraftWorker.run(CraftWorker.java:34)
    2011-12-28 22:45:26 [INFO] This error is logged only once: it could have occurred multiple times by now.
    2011-12-28 22:45:26 [INFO] Please contact one of the authors of plugin 'AfkManager': douglas_srs
    2011-12-28 22:45:26 [WARNING] Could not properly handle event PLAYER_QUIT:
    java.lang.IllegalAccessError: Synchronized code got accessed from another thread: com.douglas_srs.AfkManager.AfkManager$1
        at org.bukkit.event.player.PlayerListener.onPlayerQuit(PlayerListener:0)
        at org.bukkit.plugin.java.JavaPluginLoader$2.execute(JavaPluginLoader.java:272)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:339)
        at net.minecraft.server.ServerConfigurationManager.disconnect(ServerConfigurationManager.java:161)
        at net.minecraft.server.NetServerHandler.disconnect(NetServerHandler.java:128)
        at org.getspout.spout.SpoutNetServerHandler.disconnect(SpoutNetServerHandler.java:560)
        at org.bukkit.craftbukkit.entity.CraftPlayer.kickPlayer(CraftPlayer.java:185)
        at com.douglas_srs.AfkManager.AfkManager$1.run(AfkManager.java:89)
        at org.bukkit.craftbukkit.scheduler.CraftWorker.run(CraftWorker.java:34)
    2011-12-28 22:45:26 [INFO] This error is logged only once: it could have occurred multiple times by now.
    2011-12-28 22:45:26 [INFO] Please contact one of the authors of plugin 'AfkManager': douglas_srs
    2011-12-28 22:45:26 [INFO] ManteGudo got kicked for being AFK.
    Any help? =p
     
  2. Are you trying to kick the player cfrom another thread? Thats what it appears like
     
  3. Offline

    douglas_srs

    When enabling my plugin, I register these events:

    Code:
    pm.registerEvent(Event.Type.PLAYER_JOIN, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_BED_LEAVE, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_COMMAND_PREPROCESS, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_DROP_ITEM, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_INTERACT_ENTITY, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_INTERACT, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_ITEM_HELD, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_MOVE, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_PICKUP_ITEM, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_TOGGLE_SNEAK, playerListener, Event.Priority.Normal, this);
            pm.registerEvent(Event.Type.PLAYER_KICK, playerListener, Event.Priority.Low, this);
    So when I kick the player I use this command:

    Code:
    player.kickPlayer("AfkManager!");
    Then on my PlayerKickEvent I just change the kick message...

    Code:
    public void onPlayerKick(PlayerKickEvent event)
        {
            if (event.getReason().equals("AfkManager!"))
            {
                event.setReason(plugin.afkmanagermessage);
            }
        }
     
  4. Post your whole Player Listener...Your doing something wrong with threads it appears
     
  5. Offline

    douglas_srs

    Here it is:

    Code:
    PLAYER LISTENER :P
     
  6. Paste plugin.playerAction
     
  7. Offline

    douglas_srs

    Here it is:

    Code:
    AFKMANAGERCODE :P
     
  8. Offline

    bergerkiller

    @douglas_srs
    Code:
    getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable()
    Change that to a sync repeating task. NoLagg's anti-cross-thread-exception check saved another life :)
     
  9. Offline

    douglas_srs

    You are the best! Thank you, Worked Like a Charm! I will post your name under my plugins dev page :p
     
Thread Status:
Not open for further replies.

Share This Page