Hi guys how i can remove Op from tab list ? example Code:java @EventHandlerpublic void onPlayerJoin(PlayerJoinEvent event){ Player player = event.getPlayer(); if(player.isOp()){//remove from tab list }} I trying this.... Code:java @EventHandlerpublic void onPlayerJoin(PlayerJoinEvent event){ Player player = event.getPlayer(); if(player.isOp()){Packet201PlayerInfo packet = new Packet201PlayerInfo(player.getName(), false, 0);for(Player p: Bukkit.getServer().getOnlinePlayers())((CraftPlayer) p).getHandle().playerConnection.sendPacket(packet); }} But not working in PlayerJoinEvent..
try setting the players playerListName: Code:java player.setPlayerListName("Garry"); this will replace their TabList name with Garry.
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.
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.
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);
Well anyways, here's some code and a picture. 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) { }
Mother__ That's the ugly way of doing it... You really should try doing what Polaris29 is doing. It looks neat.