PLUGIN.YML Reloading

Discussion in 'Plugin Development' started by mehboss, Sep 20, 2016.

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

    mehboss

    So I have a warp gui plugin and when I change the performcommand in the config, it works but it keeps adding the performcommand everytime I reload it using the reload command.

    EXAMPLE: When I change warp crates in the config to warp blah and use my custom reload command, instead of it only saying Warped to warp blah once, it says
    "Warped to warp blah"
    "Warped to warp blah"
    and it keeping adding another warped message and it keeps performing the command again everytime I reload it, instead of only performing the command once, everytime I reload it, it adds another one and does it again so it does the perform warp command twice when I do /warp blah and when I reload it doesn't it 3 times, ect. But when I use the bukkit /reload command it doesn't keep adding it everytime, I think it has something to do with the way I have the custom reload command setup, could someone please help me fix my mistakes by including examples, thanks.

    CUSTOM RELOAD COMMAND
    Code:
    package me.mehboss.warpgui;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import me.mehboss.warpgui.WarpGUI;
    import net.md_5.bungee.api.ChatColor;
    
    public class Help implements CommandExecutor {
    
        private WarpGUI plugin;
    
        public Help(WarpGUI pl) {
            plugin = pl;
        }
    
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabels, String[] args) {
                        if(cmd.getName().equalsIgnoreCase("warpGUI")) {
                                if(args.length == 0) {
                                    sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8&l&m|------------------------|&r"));
                                    sender.sendMessage(ChatColor.RED + " WarpGUI " + ChatColor.GREEN + " v1.0");
                                    sender.sendMessage(ChatColor.YELLOW + " Author: Mr_Boss_Man");
                                    sender.sendMessage(ChatColor.RED + " ");
                                    sender.sendMessage(ChatColor.RED + "  Commands:");
                                    sender.sendMessage(ChatColor.GRAY + " /warps");
                                    sender.sendMessage(ChatColor.GRAY + " /warp <name>");
                                    sender.sendMessage(ChatColor.GRAY + " /WarpGUI reload");
                                    sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8&l&m|------------------------|&r"));
                                }
                                else if (args[0].equalsIgnoreCase("reload")) {
                                    if (sender.hasPermission("WarpGUI.reload")) {
                                        Bukkit.getPluginManager().getPlugin("WarpGUI").getConfig();
                                        Bukkit.getPluginManager().getPlugin("WarpGUI").reloadConfig();
                                        Bukkit.getPluginManager().getPlugin("WarpGUI").getConfig();
                                        Bukkit.getPluginManager().getPlugin("WarpGUI").saveConfig();
                                        plugin.getPluginLoader().disablePlugin(plugin);
                                        plugin.getPluginLoader().enablePlugin(plugin);
                                  sender.sendMessage(ChatColor.GREEN + "[WarpGUI] Config reloaded!");
                                  System.out.println("[WarpGUI] Config reloaded!");
                    }
                    }
                    }
                    else {
                        String noPerm = ChatColor.translateAlternateColorCodes('&',
                                plugin.getConfig().getString("noPerm"));
                        sender.sendMessage(noPerm);
                        System.out.println("§cMr_Boss_Man §4was denied access to command.");
                    }
                        return false;
                
                }
        }
    
    CONFIG
    Code:
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # WarpGUI plugin by MehBoss
    # Version 1.0
    #     
    # noPerm == The message it sends when the player does not have the permission node.
    # GUI-Size == The size of the WarpGUI // NOTE: has to be a multiple of 9.
    # Item1-Slot == The slot number of the first item.
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # MESSAGES
    #                                
    noPerm: '&4You do not have permission to access that command!'
    GUI-Size: '27'
    Item1-Slot: '10'
    Item1-Name: 'Crates'
    Item1-Command: 'warp Crates'
    Item2-Slot: '12'
    Item2-Name: 'Info'
    Item2-Command: 'warp Info'
    Item3-Slot: '14'
    Item3-Name: 'MobArena'
    Item3-Command: 'warp MobArena'
    Item4-Slot: '16'
    Item4-Name: 'Shop'
    Item4-Command: 'warp Shop'
    [/CODE]
    WARP PLUGIN CLASS
    Code:
    package me.mehboss.warpgui;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import net.md_5.bungee.api.ChatColor;
    
    public class WarpGUI extends JavaPlugin implements Listener, CommandExecutor {
      
        private Menu createItem;
      
        public void onEnable() {
            createItem = new Menu(this, null, null, null, null, null, null);
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
            getCommand("warpGUI").setExecutor(new Help(this));
            registerConfig();
          
        }
      
        private void registerConfig() {
            getConfig().options().copyDefaults(true);
            saveConfig();
            getLogger();
        }
      
        @EventHandler(priority = EventPriority.HIGHEST)
        public void onPreCommand(PlayerCommandPreprocessEvent e){
          String[] args = e.getMessage().split(" ");
          if(args[0].equalsIgnoreCase("/warps")){
            e.setCancelled(true); // To keep the true command from running      
                if (e.getPlayer() instanceof Player) {
                    Player p = (Player)e.getPlayer();
                    if (p.hasPermission("warpGUI.gui")) {
                                  
            createItem.show(p);
          
                    }
                    else {
                        String noPerm = ChatColor.translateAlternateColorCodes('&',
                                Bukkit.getPluginManager().getPlugin("WarpGUI").getConfig().getString("noPerm"));
                        p.sendMessage(noPerm);
                        System.out.println("§cMr_Boss_Man §4was denied access to command.");
                    }
                }
          }
                      
    }
                  
                    @EventHandler(priority = EventPriority.HIGHEST)
                    public void onPreCommand1(PlayerCommandPreprocessEvent e){
                      String[] args = e.getMessage().split(" ");
                      if(args[0].equalsIgnoreCase("/warp")){
                        e.setCancelled(true); // To keep the true command from running      
                            if (e.getPlayer() instanceof Player) {
                                Player p = (Player)e.getPlayer();
                              
                                        createItem.show(p);
                                      
                                    }
                                String Item1Name = getConfig().getString("Item1-Name");
                                if (args[1].equalsIgnoreCase(Item1Name)) {
                                        Player p = (Player)e.getPlayer();
                                        String Item1Command = getConfig().getString("Item1-Command");
                                        p.performCommand(Item1Command);
                                    }
                                String Item2Name = getConfig().getString("Item2-Name");
                                  if (args[1].equalsIgnoreCase(Item2Name)) {
                                        Player p = (Player)e.getPlayer();
                                        String Item2Command = getConfig().getString("Item2-Command");
                                        p.performCommand(Item2Command);
                                    }
                                String Item3Name = getConfig().getString("Item3-Name");
                                  if (args[1].equalsIgnoreCase(Item3Name)) {
                                        Player p = (Player)e.getPlayer();
                                        String Item3Command = getConfig().getString("Item3-Command");
                                        p.performCommand(Item3Command);
                                    }
                                String Item4Name = getConfig().getString("Item4-Name");
                                  if (args[1].equalsIgnoreCase(Item4Name)) {
                                        Player p = (Player)e.getPlayer();
                                        String Item4Command = getConfig().getString("Item4-Command");
                                        p.performCommand(Item4Command);
                }
            }
        }
    }
     
  2. Offline

    Zombie_Striker

    @mehboss
    Did you debug? If so, does your command run twice? If so, make sure that your code is not also dispatching the /warp command.
     
  3. Offline

    mehboss

    @Zombie_Striker @Jakeeeee

    I am pretty sure it doesn't because when I do a normal server /reload it doesn't. Must have something to do with the reload code?

    UPDATE:
    It has to do with the /warpgui reload code because even if I don't change the config warp command and I do the /warpgui reload it keeps adding the send command another time each reload. It does not do it and it resets back to only one time performing the command when I do the bukkit /reload command. Can someone please help me?
     
    Last edited: Sep 23, 2016
  4. Offline

    mehboss

  5. Offline

    Zombie_Striker

    @mehboss
    You issue is that you have two PreroccessCommandEvents. The two events are interfering with eachother. You should only have one of each type of event for your entire plugin. Merge those two methods, and your problem should be resolved.
     
  6. Offline

    mehboss

    @Zombie_Striker How to I merge them, I have tried this xD
    Code:
    package me.mehboss.warpgui;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerCommandPreprocessEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import net.md_5.bungee.api.ChatColor;
    
    public class WarpGUI extends JavaPlugin implements Listener, CommandExecutor {
     
        private Menu createItem;
     
        public void onEnable() {
            createItem = new Menu(this, null, null, null, null, null, null, null, null, null,
            null, null, null, null, null, null);
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
            getCommand("warpGUI").setExecutor(new Help());
            registerConfig();
         
        }
     
        private void registerConfig() {
            getConfig().options().copyDefaults(true);
            saveConfig();
            getLogger();
        }
     
        @EventHandler(priority = EventPriority.HIGHEST)
        public void onPreCommand(PlayerCommandPreprocessEvent e){
          String[] args = e.getMessage().split(" ");
          if(args[0].equalsIgnoreCase("/warps")){
            e.setCancelled(true); // To keep the true command from running     
                if (e.getPlayer() instanceof Player) {
                    Player p = (Player)e.getPlayer();
                    if (p.hasPermission("warpGUI.gui")) {
                                 
            createItem.show(p);
         
                    }
                    else {
                        String noPerm = ChatColor.translateAlternateColorCodes('&',
                                Bukkit.getPluginManager().getPlugin("WarpGUI").getConfig().getString("noPerm"));
                        p.sendMessage(noPerm);
                        System.out.println("§cMr_Boss_Man §4was denied access to command.");
                    }
          String[] args1 = e.getMessage().split(" ");
          if(args1[0].equalsIgnoreCase("/warp")){
            e.setCancelled(true); // To keep the true command from running     
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cToo many arguments!"));
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8&l&m|------------------------------|&r"));
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e&l WarpGUI " + "&a&nv1.0&r"));
                    p.sendMessage(" ");
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', " &e&oAuthor: Mr_Boss_Man"));
                    p.sendMessage(" ");
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "  &bArguments:"));
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c /warps &8- &7Opens the warp GUI."));
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c /warp <name> &8- &7Warp to a specific warp."));
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&8&l&m|------------------------------|&r")); 
                         
                        }
                    String Item1Name = getConfig().getString("Item1-Command-Name");
                    if (args[1].equalsIgnoreCase(Item1Name)) {
                            String Item1Command = getConfig().getString("Item1-Command");
                            p.performCommand(Item1Command);
                        }
                    String Item2Name = getConfig().getString("Item2-Command-Name");
                      if (args[1].equalsIgnoreCase(Item2Name)) {
                            String Item2Command = getConfig().getString("Item2-Command");
                            p.performCommand(Item2Command);
                        }
                    String Item3Name = getConfig().getString("Item3-Command-Name");
                      if (args[1].equalsIgnoreCase(Item3Name)) {
                            String Item3Command = getConfig().getString("Item3-Command");
                            p.performCommand(Item3Command);
                        }
                    String Item4Name = getConfig().getString("Item-Command-Name");
                      if (args[1].equalsIgnoreCase(Item4Name)) {
                            String Item4Command = getConfig().getString("Item4-Command");
                            p.performCommand(Item4Command);
                        }
            }
          }
        }
    }
     
Thread Status:
Not open for further replies.

Share This Page