Method not being called

Discussion in 'Plugin Development' started by Kassestral, Jun 3, 2015.

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

    Kassestral

    I have just come back to a previous project I was working on a while ago, it was working perfectly when I last used it, however now for some reason my repeatableChatUpdater() which is located inside ChatHandler.java isn't being called, or atleast that's what I've got from debugging, anyone care to help?

    @timtower

    TribalWars.java
    Code:
    package com.kassestral.minigames.tribalwars;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.Bukkit;
    import org.bukkit.plugin.Plugin;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import com.kassestral.minigames.tribalwars.buildings.SelectEvent;
    import com.kassestral.minigames.tribalwars.buildings.Selector;
    import com.kassestral.minigames.tribalwars.chat.ChatCommands;
    import com.kassestral.minigames.tribalwars.chat.ChatEvent;
    import com.kassestral.minigames.tribalwars.chat.ChatHandler;
    import com.kassestral.minigames.tribalwars.tribe.TribeCommands;
    import com.kassestral.minigames.tribalwars.tribe.TribeHandler;
    
    public class TribalWars extends JavaPlugin {
    
        private static Plugin plugin;
        public static File folder;
        public static File configuration_file;
        public static TribeHandler tribeHandler;
        public static ChatHandler chatHandler;
        public static TribeCommands tribeCommands;
        public static ChatCommands chatCommands;
        public static Selector selector;
        private PluginManager pm = Bukkit.getServer().getPluginManager();
    
        @Override
        public void onEnable() {
            //Initialising Variables
            plugin = this;
            TribalWars.folder = new File(this.getDataFolder() + File.separator + "tribes");
            TribalWars.configuration_file = new File(this.getDataFolder() + File.separator + "config.yml");
            //Calling Methods
            tribeHandler = new TribeHandler();
            chatHandler = new ChatHandler();
            selector = new Selector();
            createDirectories();
            registerCommands();
            registerEvents();
            tribeHandler.loadTribes();
            chatHandler.loadChatmodes();
            tribeHandler.repeatableTribeUpdater();
            chatHandler.repeatableChatUpdater();
        }
    
        public void onDisable() {
            try {
                tribeHandler.saveTribes();
                chatHandler.saveChatmodes();
                if(plugin != null) {
                    plugin = null;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
      
        public static Plugin getPlugin() {
            return plugin;
        }
      
        public static void Log(String string) {
            Bukkit.getLogger().info(string);
        }
      
        public static void Announce(String string) {
            String prefix = Utility.colorizeText("&e&l[TribalWars]&r ");
            Bukkit.getServer().broadcastMessage(Utility.colorizeText(prefix + string));
        }
      
        public void registerCommands() {
            tribeCommands = new TribeCommands();
            chatCommands = new ChatCommands();
            getCommand("tribe").setExecutor(tribeCommands);
            getCommand("chat").setExecutor(chatCommands);
        }
      
        public void registerEvents() {
            ChatEvent chatEvent = new ChatEvent();
            SelectEvent selectEvent = new SelectEvent();
            pm.registerEvents(chatEvent, this);
            pm.registerEvents(selectEvent, this);
        }
      
        private void createDirectories() {
            if(!configuration_file.exists()) {
                plugin.saveConfig();
            }
            if(!folder.exists()) {
                folder.mkdir();
            }
        }
    }
    
    ChatHandler.java
    Code:
    package com.kassestral.minigames.tribalwars.chat;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map.Entry;
    import java.util.UUID;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.Plugin;
    
    import com.kassestral.minigames.tribalwars.TribalWars;
    
    public class ChatHandler {
      
        private Plugin plugin = TribalWars.getPlugin();
        public List<UUID> globalChat;
        public List<UUID> localChat;
        public List<UUID> tribeChat;
        public HashMap<UUID, Integer> chat = new HashMap<UUID, Integer>();
      
        public ChatHandler() {
            globalChat = new ArrayList<UUID>();
            localChat = new ArrayList<UUID>();
            tribeChat = new ArrayList<UUID>();
        }
      
        public int getChat(Player player) {
            return chat.get(player.getUniqueId());
        }
      
        public void setChat(Player player, int id) {
            if(chat.containsKey(player.getUniqueId())) {
                chat.remove(player.getUniqueId());
                chat.put(player.getUniqueId(), id);
            } else {
                chat.put(player.getUniqueId(), id);
            }
        }
      
        public void addChatmode(Player player, int id) {
            if(!hasChatmode(player, id)) {
                List<UUID> mode = chatmodeFromId(id);
                mode.add(player.getUniqueId());
            }
        }
      
        public void removeChatmode(Player player, int id) {
            if(hasChatmode(player, id)) {
                List<UUID> mode = chatmodeFromId(id);
                mode.remove(player.getUniqueId());
            }
        }
      
        public List<UUID> chatmodeFromId(int id) {
            if(id == 1) {
                return localChat;
            } else if (id == 2) {
                return tribeChat;
            } else if (id == 0){
                return globalChat;
            } else {
                return globalChat;
            }
        }
      
        public boolean hasChatmode(Player player, int id) {
            List<UUID> mode = chatmodeFromId(id);
            if(mode.contains(player.getUniqueId())) {
                return true;
            } else {
                return false;
            }
        }
      
        public void saveChatmodes() {
            List<String> globalChatStrings = new ArrayList<String>();
            List<String> localChatStrings = new ArrayList<String>();
            List<String> tribeChatStrings = new ArrayList<String>();
          
            for(UUID uuid : globalChat) {
                globalChatStrings.add(uuid.toString());
            }
            for(UUID uuid : localChat) {
                localChatStrings.add(uuid.toString());
            }
            for(UUID uuid : tribeChat) {
                tribeChatStrings.add(uuid.toString());
            }
          
            plugin.getConfig().set("chatmodes.global", globalChatStrings);
            plugin.getConfig().set("chatmodes.local", localChatStrings);
            plugin.getConfig().set("chatmodes.tribe", tribeChatStrings);
            plugin.saveConfig();
        }
      
        public void loadChatmodes() {
            for(String uuid : plugin.getConfig().getStringList("chatmodes.global")) {
                if(uuid != null) {
                    if(!globalChat.contains(UUID.fromString(uuid))) {
                        globalChat.add(UUID.fromString(uuid));
                    }
                }
            }
            for(String uuid : plugin.getConfig().getStringList("chatmodes.tribe")) {
                if(uuid != null) {
                    if(!localChat.contains(UUID.fromString(uuid))) {
                        localChat.add(UUID.fromString(uuid));
                    }
                }
            }
            for(String uuid : plugin.getConfig().getStringList("chatmodes.tribe")) {
                if(uuid != null) {
                    if(!tribeChat.contains(UUID.fromString(uuid))) {
                        tribeChat.add(UUID.fromString(uuid));
                    }
                }
            }
        }
      
        public void saveChat() {
            for (Entry<UUID, Integer> entry : chat.entrySet()) {
                String uuid = entry.getKey().toString();
                int id = entry.getValue();
              
                TribalWars.Log(uuid);
                TribalWars.Log(""+id);
              
                plugin.getConfig().set("chatmodes.current." + uuid, id);
            }
            plugin.getConfig().addDefault("chatmodes.local_distance", 250);
            plugin.saveConfig();
        }
      
        public void loadChat() {
            for(String key : plugin.getConfig().getConfigurationSection("chatmodes.current").getKeys(false)){
                if(key != null) {
                    int id = plugin.getConfig().getInt("chatmodes.current." + key);
                    UUID uuid = UUID.fromString(key);
                    if(!chat.containsKey(uuid)) {
                        chat.put(uuid, id);
                    }
                }
            }
        }
      
        public void repeatableChatUpdater() {
            Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
                public void run() {
                    TribalWars.Log("i");
                    TribalWars.Log(chat.toString());
                    saveChatmodes();
                    loadChatmodes();
                    saveChat();
                    loadChat();
                }
            }, 0, 60L);
        }
    }
    ChatEvent.java
    Code:
    package com.kassestral.minigames.tribalwars.chat;
    
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.Plugin;
    
    import com.kassestral.minigames.tribalwars.TribalWars;
    import com.kassestral.minigames.tribalwars.Utility;
    import com.kassestral.minigames.tribalwars.tribe.Tribe;
    import com.kassestral.minigames.tribalwars.tribe.TribeHandler;
    
    public class ChatEvent implements Listener {
      
        private ChatHandler chatHandler = TribalWars.chatHandler;
        private Plugin plugin = TribalWars.getPlugin();
      
        @EventHandler
        public void onPlayerChat(AsyncPlayerChatEvent event) {
            Player player = event.getPlayer();
            String text = event.getMessage();
            int id = chatHandler.getChat(player);
            String[] prefix = {Utility.colorizeText("&a&l[GLOBAL] &r"),Utility.colorizeText("&9&l[LOCAL] &r"),Utility.colorizeText("&e&l[TRIBE] &r")};
          
            if(id == 0) {
                for(Player receiver : Bukkit.getOnlinePlayers()) {
                    if(chatHandler.hasChatmode(receiver, id)) {
                        String message = prefix[id] + player.getDisplayName() + " : " + text;
                        receiver.sendMessage(message);
                    }
                }
            } else if(id == 1) {
                for(Player receiver : Bukkit.getOnlinePlayers()) {
                    int distance = plugin.getConfig().getInt("chatmodes.local_distance");
                    if(receiver.getLocation().distance(player.getLocation()) <= distance) {
                        if(chatHandler.hasChatmode(receiver, id)) {
                            String message = prefix[id] + player.getDisplayName() + " : " + text;
                            receiver.sendMessage(message);
                        }
                    }
                }
            } else if(id == 2) {
                TribeHandler tribeHandler = TribalWars.tribeHandler;
                for(Player receiver : Bukkit.getOnlinePlayers()) {
                    if(tribeHandler.hasTribe(receiver)) {
                        Tribe Rtribe = tribeHandler.getTribe(receiver);
                        Tribe Ptribe = tribeHandler.getTribe(player);
                      
                        if(Rtribe.getName().equals(Ptribe.getName())) {
                            if(chatHandler.hasChatmode(receiver, id)) {
                                String message = prefix[id] + player.getDisplayName() + " : " + text;
                                receiver.sendMessage(message);
                            }
                        }
                    }
                }
            }
            event.setCancelled(true);
        }
      
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
            ChatHandler chatHandler = TribalWars.chatHandler;
            Player player = event.getPlayer();
            if(!player.hasPlayedBefore()) {
                chatHandler.setChat(player, 0);
                chatHandler.addChatmode(player, 0);
                chatHandler.addChatmode(player, 1);
            }
    
        }
    ChatCommands.java
    [code=java]package com.kassestral.minigames.tribalwars.chat;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    import com.kassestral.minigames.tribalwars.TribalWars;
    import com.kassestral.minigames.tribalwars.Utility;
    import com.kassestral.minigames.tribalwars.tribe.TribeHandler;
    
    public class ChatCommands implements CommandExecutor {
    
        private String[] prefix = {Utility.colorizeText("&a&l[GLOBAL CHAT]&r"),Utility.colorizeText("&9&l[LOCAL CHAT]&r"),Utility.colorizeText("&e&l[TRIBE CHAT]&r")};
        private TribeHandler tribeHandler = TribalWars.tribeHandler;
      
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if(command.getName().equalsIgnoreCase("chat")) {
                if(sender instanceof Player) {
                    Player player = (Player) sender;
                    ChatHandler chatHandler = TribalWars.chatHandler;
                    if(args.length >= 2) {
                        switch(args[0].toLowerCase()) {
                        case "join": {
                            if(args[1].equalsIgnoreCase("global")) {
                                if(!chatHandler.hasChatmode(player, 0)) {
                                    chatHandler.addChatmode(player, 0);
                                    player.sendMessage(Utility.colorizeText("&6&lYou have &a&lJOINED &6&lthe " + prefix[0] + " &6&lchannel"));
                                } else {
                                    player.sendMessage(Utility.colorizeText("&6&lYou are already apart of &6&lthe " + prefix[0] + " &6&lchannel"));
                                }
                            } else if(args[1].equalsIgnoreCase("local")) {
                                if(!chatHandler.hasChatmode(player, 1)) {
                                    chatHandler.addChatmode(player, 1);
                                    player.sendMessage(Utility.colorizeText("&6&lYou have &a&lJOINED &6&lthe " + prefix[1] + " &6&lchannel"));
                                } else {
                                    player.sendMessage(Utility.colorizeText("&6&lYou are already apart of the " + prefix[1] + " &6&lchannel"));
                                }
                            } else if(args[1].equalsIgnoreCase("tribe")) {
                                if(!chatHandler.hasChatmode(player, 2)) {
                                    chatHandler.addChatmode(player, 2);
                                    player.sendMessage(Utility.colorizeText("&6&lYou have &a&lJOINED &6&lthe " + prefix[2] + " &6&lchannel"));
                                } else {
                                    player.sendMessage(Utility.colorizeText("&6&lYou are already apart of the " + prefix[2] + " &6&lchannel"));
                                }
                            } else {
                                player.sendMessage(Utility.colorizeText("&c&lInvalid Arguments: /chat join <global,local,tribe>"));
                            }
                            break;
                        }
                        case "leave": {
                            if(args[1].equalsIgnoreCase("global")) {
                                if(chatHandler.hasChatmode(player, 0)) {
                                    if(chatHandler.getChat(player) == 0) {
                                        player.sendMessage(Utility.colorizeText("&c&lPlease broadcast in a different chat, then try again!"));
                                    } else {
                                        chatHandler.removeChatmode(player, 0);
                                        player.sendMessage(Utility.colorizeText("&6&lYou have &c&lLEFT &6&lthe " + prefix[0] + " &6&lchannel"));
                                    }
                                } else {
                                    player.sendMessage(Utility.colorizeText("&6&lYou aren't in the " + prefix[0] + " &6&lchannel"));
                                }
                            } else if(args[1].equalsIgnoreCase("local")) {
                                if(!chatHandler.hasChatmode(player, 1)) {
                                    if(chatHandler.getChat(player) == 1) {
                                        player.sendMessage(Utility.colorizeText("&c&lPlease broadcast in a different chat, then try again!"));
                                    } else {
                                        chatHandler.removeChatmode(player, 1);
                                        player.sendMessage(Utility.colorizeText("&6&lYou have &c&lLEFT &6&lthe " + prefix[1] + " &6&lchannel"));
                                    }
                                } else {
                                    player.sendMessage(Utility.colorizeText("&6&lYou aren't in the " + prefix[1] + " &6&lchannel"));
                                }
                            } else if(args[1].equalsIgnoreCase("tribe")) {
                                if(tribeHandler.hasTribe(player)) {
                                    if(chatHandler.hasChatmode(player, 2)) {
                                        if(chatHandler.getChat(player) == 2) {
                                            player.sendMessage(Utility.colorizeText("&c&lPlease broadcast in a different chat, then try again!"));
                                        } else {
                                            chatHandler.removeChatmode(player, 2);
                                            player.sendMessage(Utility.colorizeText("&6&lYou have &c&lLEFT &6&lthe " + prefix[2] + " &6&lchannel"));
                                        }
                                    } else {
                                        player.sendMessage(Utility.colorizeText("&6&lYou aren't in the " + prefix[1] + " &6&lchannel"));
                                    }
                                } else {
                                    player.sendMessage(Utility.colorizeText("&c&lYou do not belong to a tribe"));
                                }
                            } else {
                                player.sendMessage(Utility.colorizeText("&c&lInvalid Arguments: /chat leave <global,local,tribe>"));
                            }
                            break;
                        }
                        default: {
                            player.sendMessage(Utility.colorizeText("&c&lInvalid Arguments: /chat <join/leave> <global,local,tribe>"));
                        }
                        }
                    } else if(args.length == 1) {
                        switch(args[0].toLowerCase()) {
                        case "global": {
                            if(chatHandler.hasChatmode(player, 0)) {
                                player.sendMessage(Utility.colorizeText(Utility.colorizeText("&6&lYou are now broadcasting in " + prefix[0])));
                                chatHandler.setChat(player, 0);
                            } else {
                                chatHandler.addChatmode(player, 0);
                                chatHandler.setChat(player, 0);
                                player.sendMessage(Utility.colorizeText("&6&lYou have &a&lJOINED &6&lthe " + prefix[0] + " &6&lchannel"));
                                player.sendMessage(Utility.colorizeText(Utility.colorizeText("&6&lYou are now broadcasting in " + prefix[0])));
                            }
                            break;
                        }
                        case "local": {
                            if(chatHandler.hasChatmode(player, 1)) {
                                player.sendMessage(Utility.colorizeText(Utility.colorizeText("&6&lYou are now broadcasting in " + prefix[1])));
                                chatHandler.setChat(player, 1);
                            } else {
                                chatHandler.setChat(player, 1);
                                chatHandler.addChatmode(player, 1);
                                player.sendMessage(Utility.colorizeText("&6&lYou have &a&lJOINED &6&lthe " + prefix[1] + " &6&lchannel"));
                                player.sendMessage(Utility.colorizeText(Utility.colorizeText("&6&lYou are now broadcasting in " + prefix[1])));
                            }
                            break;
                        }
                        case "tribe": {
                            if(tribeHandler.hasTribe(player)) {
                                if(chatHandler.hasChatmode(player, 2)) {
                                    player.sendMessage(Utility.colorizeText(Utility.colorizeText("&6&lYou are now broadcasting in " + prefix[2])));
                                    chatHandler.setChat(player, 2);
                                } else {
                                    player.sendMessage(Utility.colorizeText("&6&lYou have &a&lJOINED &6&lthe " + prefix[2] + " &6&lchannel"));
                                    player.sendMessage(Utility.colorizeText(Utility.colorizeText("&6&lYou are now broadcasting in " + prefix[2])));
                                    chatHandler.addChatmode(player, 2);
                                    chatHandler.setChat(player, 2);
                                }
                            } else {
                                player.sendMessage(Utility.colorizeText("&c&lYou do not belong to a tribe"));
                            }
                            break;
                        }
                        }
                    }
                } else {
                    TribalWars.Log("This command cannot be executed from console");
                }
            }
            return false;
        }
    }
     
  2. Offline

    Zombie_Striker

    @Kassestral
    When does it update? Where is it called? Are there any errors? Do you know if everything else is up to date?

    All your classes are huge and I really don't want to read through it all, just to find one line. Can you just post the methods that reference the update method.
     
  3. Offline

    Kassestral

    @Zombie_Striker
    More or less the ChatHandler.java
     
  4. Offline

    Zombie_Striker

    @Kassestral
    I meant the references. I seems it is not referenced in the ChatHandler class, but I so far only found one reference in the onEnable().

    Is it the runnable that is not read or the entire method? Are there any error messages?
     
Thread Status:
Not open for further replies.

Share This Page