BarAPI help!

Discussion in 'Plugin Development' started by jkctech, Apr 15, 2014.

Thread Status:
Not open for further replies.
  1. Hello, im working on a plugin which uses BarApi, and i have a question.
    i want i message to change color every second, it works but i have no clue of how to make a loop.
    i have this code so far:
    Code:java
    1. package me.jkctech.JKCBar;
    2.  
    3. import me.confuser.barapi.BarAPI;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.plugin.PluginDescriptionFile;
    12. import org.bukkit.plugin.java.JavaPlugin;
    13. import org.bukkit.scheduler.BukkitRunnable;
    14. import org.bukkit.scheduler.BukkitScheduler;
    15.  
    16.  
    17. public class Main extends JavaPlugin implements Listener{
    18.  
    19. @Override
    20. public void onEnable(){
    21. PluginDescriptionFile ymlFile = this.getDescription();
    22. this.getLogger().info(ymlFile.getName() + " Version " + ymlFile.getVersion() + " is enabled!");
    23. this.getLogger().info("This plugin is made by jkctech!");
    24. this.getServer().getPluginManager().registerEvents(this, this);
    25. }
    26.  
    27. @Override
    28. public void onDisable(){
    29. PluginDescriptionFile ymlFile = this.getDescription();
    30. this.getLogger().info(ymlFile.getName() + ymlFile.getVersion() + " is now disabled!");
    31. }
    32.  
    33.  
    34. @EventHandler
    35. public void onPlayerJoin(PlayerJoinEvent event)
    36. {
    37. final Player player = event.getPlayer();
    38. BukkitScheduler scheduler1 = Bukkit.getServer().getScheduler();
    39.  
    40. scheduler1.scheduleSyncDelayedTask(this, new BukkitRunnable() {@Override public void run() {
    41. BarAPI.setMessage(player, ChatColor.BLUE + "[JKC-Craft]");}}, 20);
    42. scheduler1.scheduleSyncDelayedTask(this, new BukkitRunnable() {@Override public void run() {
    43. BarAPI.setMessage(player, ChatColor.GOLD + "[JKC-Craft]");}}, 30);
    44. }
    45.  
    46.  
    47.  
    48. }


    it only has 2 colors, but you get the idea.
    i was thinking about changing a variable every second which contains the color, but im fairly new to bukkit os i need help.

    thanks in advance!
     
  2. Offline

    DrEinsteinium

  3. Code:
    private Map<String, Integer> playerTasks = new HashMap<String, Integer>();
     
    @EventHandler
    public void onPlayerJoin(PlayerJoinEvent event) {
        final Player player = event.getPlayer();
        this.playerTasks.put(player.getName(), player.getServer().getScheduler().runTaskTimer(this, new Runnable() {
            private int index = 0;
            public void run() {
                if (player != null) {
                    BarAPI.setMessage(player, getColour(index) + "[JKC-Craft]");
                    this.index++;
                    if (this.index > 15) this.index = 0;
                }
            }
        }, 1L, 20L).getTaskId());
    }
     
    @EventHandler
    public void onPlayerLeave(PlayerQuitEvent event) {
        if (this.playerTasks.containsKey(event.getPlayer().getName())) event.getPlayer().getServer().getScheduler().cancelTask(this.playerTasks.remove(event.getPlayer().getName()));
    }
     
    @EventHandler
    public void onPlayerKicked(PlayerKickEvent event) {
        if (this.playerTasks.containsKey(event.getPlayer().getName())) event.getPlayer().getServer().getScheduler().cancelTask(this.playerTasks.remove(event.getPlayer().getName()));
    }
     
    public ChatColor getColour(int index) {
        if (index == 0) return ChatColor.BLACK;
        if (index == 1) return ChatColor.DARK_BLUE;
        if (index == 2) return ChatColor.DARK_GREEN;
        if (index == 3) return ChatColor.DARK_AQUA;
        if (index == 4) return ChatColor.DARK_RED;
        if (index == 5) return ChatColor.DARK_PURPLE;
        if (index == 6) return ChatColor.GOLD;
        if (index == 7) return ChatColor.GRAY;
        if (index == 8) return ChatColor.DARK_GRAY;
        if (index == 9) return ChatColor.BLUE;
        if (index == 10) return ChatColor.GREEN; // &a
        if (index == 11) return ChatColor.AQUA; // &b
        if (index == 12) return ChatColor.RED; // &c
        if (index == 13) return ChatColor.LIGHT_PURPLE; // &d
        if (index == 14) return ChatColor.YELLOW; // &e
        return ChatColor.WHITE; // &f
    }
    
     
  4. KingFaris11 likes this.
  5. Offline

    Garris0n

    Just so you know, Bukkit prints an enable message for you so you don't have to.
     
  6. Garris0n I know, but i like to do it also

    Hello, im struggeling with another thing last days, how do i replace an ender eye with an ender pearl? and they both have to have custom names.
    ive tried several things but nothing worked.

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

    Garris0n

  8. Garris0n That doesn't seem to work for me, it think because its for 1.6.4 do you have onother suggestion, also i wasnt able to change the name using this method.
     
  9. Offline

    Garris0n

    Use ItemMeta to change the name and it works perfectly fine in 1.6.4.
     
  10. exactly, it works in 1.6.4 im working on a plugin for 1.7.5...
     
  11. Please try and type in the best English you can. :/ I don't understand this... Care to retype that or explain better?

    Edit: Why can't you just use item.setType(Material.ENDER_PEARL);
     
  12. KingFaris11 ok, i want that if a player uses an ender eye called "Players - enabled" it changes the item to an ender eye and the name to "Players - disabled" and hides all other players. and the other way around.
    can someone do this for me?
     
  13. Firstly, don't ask if someone can do this for you. Although, bad thing for me yet good thing for you that you asked here, because even though I hate people who do this, I always end up doing it. -_- Here I go, spoon-feeding you breakfast/lunch/dinner.

    Code:
    @EventHandler
    public void onPlayerInteract(PlayerInteractEvent event) {
        if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if (event.getItem() != null) {
                ItemStack itemStack = event.getItem();
                ItemMeta itemMeta = itemStack.getItemMeta();
                if (itemMeta != null) {
                    if (itemMeta.hasDisplayName()) {
                        String itemName = ChatColor.stripColor(itemMeta.getDisplayName());
                        if (itemStack.getType() == Material.ENDER_PEARL && itemName.equals("Players - Enabled")) {
                            itemMeta.setDisplayName(itemMeta.getDisplayName().replaceAll("Enabled", "Disabled"));
                            event.getItem().setType(Material.EYE_OF_ENDER);
                            event.getItem().setItemMeta(itemMeta);
                            event.setCancelled(true);
                            for (Player onlinePlayer : event.getPlayer().getServer().getOnlinePlayers()) {
                                if (!onlinePlayer.getUniqueId().equals(event.getPlayer().getUniqueId())) event.getPlayer().hidePlayer(onlinePlayer);
                            }
                        } else if (itemStack.getType() == Material.EYE_OF_ENDER && itemName.equals("Players - Disabled")) {
                            itemMeta.setDisplayName(itemMeta.getDisplayName().replaceAll("Disabled", "Enabled"));
                            event.getItem().setType(Material.ENDER_PEARL);
                            event.getItem().setItemMeta(itemMeta);
                            event.setCancelled(true);
                            for (Player onlinePlayer : event.getPlayer().getServer().getOnlinePlayers()) {
                                if (!onlinePlayer.getUniqueId().equals(event.getPlayer().getUniqueId())) event.getPlayer().showPlayer(onlinePlayer);
                            }
                        }
                    }
                }
            }
        }
    }
    
    Note: Not sure if this will throw errors or has a syntax error - didn't use an IDE.
     
Thread Status:
Not open for further replies.

Share This Page