TabLIST

Discussion in 'Plugin Development' started by Mother__, Jun 19, 2013.

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

    Mother__

    Hi guys how i can remove Op from tab list ? example

    Code:java
    1.  
    2.  
    3. @EventHandler
    4. public void onPlayerJoin(PlayerJoinEvent event){
    5. Player player = event.getPlayer();
    6.  
    7. if(player.isOp()){
    8. //remove from tab list
    9.  
    10. }
    11. }
    12.  
    13.  



    I trying this....

    Code:java
    1.  
    2.  
    3. @EventHandler
    4. public void onPlayerJoin(PlayerJoinEvent event){
    5. Player player = event.getPlayer();
    6.  
    7. if(player.isOp()){
    8. Packet201PlayerInfo packet = new Packet201PlayerInfo(player.getName(), false, 0);
    9. for(Player p: Bukkit.getServer().getOnlinePlayers())
    10. ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);
    11.  
    12. }
    13. }
    14.  
    15.  


    But not working in PlayerJoinEvent..
     
  2. try setting the players playerListName:
    Code:java
    1. player.setPlayerListName("Garry");

    this will replace their TabList name with Garry.
     
  3. Offline

    Mother__

    Sorry but i need remove u no have other solution?
     
  4. Offline

    Polaris29

  5. Offline

    bitWolfy

    Mother__ Okay, prepare for retarded questions: are you sure that you have registered the listener class with the plugin manager? Just making sure.

    The code you have should work, though. Strange.
     
  6. Offline

    Mother__

    I looked before asking for help...

    omg.. of course this code not working in PlayerJoinEvent but in other event like command working i think packet not working in playerjoin because this player not yet ...

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 2, 2016
  7. Offline

    bitWolfy

    Mother__ Well, delay the removal by like 2 seconds. Not sure why would it not work as-is, though.
    Code:
    Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
        @Override
        public void run() {
           
        }
    }, 40L);
     
  8. Offline

    Polaris29

    Well anyways, here's some code and a picture.
    [​IMG]

    Code:
    public class Test extends JavaPlugin {
        public static Logger logger = Logger.getLogger("Minecraft");
     
        @Override
        public void onDisable() {
            PluginDescriptionFile desc = this.getDescription();
            saveConfig();
            logger.info(desc.getName()+" version " + desc.getVersion() + " is now disabled.");
        }
     
        @Override
        public void onEnable() {
        PluginDescriptionFile desc = this.getDescription();
     
        Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable(){
     
            @Override
            public void run() {
                for (Player player : Bukkit.getServer().getOnlinePlayers()) {
                    if(player.isOp()){
                        Packet201PlayerInfo packet = new Packet201PlayerInfo(player.getName(), false, 0);
                        for(Player p: Bukkit.getServer().getOnlinePlayers()) {
                            ((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet);
                        }
                    }
                }
            }}, 0, 1);
     
            logger.info(desc.getName()+" version " + desc.getVersion() + " is now enabled.");
        }
    }
    
    Edit: Here's a update-proof version: (Not tested)
    Code:
    String packageName = "net.minecraft.server." + Bukkit.getServer().getClass().getPackage().getName().replace(".", ",").split(",")[3];
     
    try {
        Class<?> packetClass = Class.forName(packageName + ".Packet63WorldParticles");
        Object packet = packetClass.getConstructors()[0].newInstance((Object) player.getName(), (Object) false, (Object) 0);
       
        for(Player p: Bukkit.getServer().getOnlinePlayers()) {
            Object entityPlayer = p.getClass().getMethod("getHandle").invoke(p);
            Object playerConnection = entityPlayer.getClass().getField("playerConnection").get(entityPlayer);
            playerConnection.getClass().getMethod("sendPacket").invoke(playerConnection, packet);
        }
    } catch(Exception e) {
       
    }
    
     
  9. Offline

    Mother__

    OMG!!!!!!!!!!!!!!! WORKING USING TASK !!!!!!!!!! THX​
     
  10. Offline

    bitWolfy

    Mother__ That's the ugly way of doing it... You really should try doing what Polaris29 is doing. It looks neat.
     
Thread Status:
Not open for further replies.

Share This Page