Need help if possible

Discussion in 'Plugin Development' started by Maxxxy93, Aug 11, 2016.

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

    Maxxxy93

    Code:
    package me.maxxxy;
    
    import java.util.Arrays;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class RebellionDuels
      extends JavaPlugin
      implements Listener
    {
      public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
      {
        Bukkit.getServer().getPluginManager().registerEvents(this, this);
      
        Player p = (Player)sender;
      
        Inventory inv = Bukkit.createInventory(null, 9, ChatColor.AQUA + "Duels.");
      
        ItemStack BuildUHC = new ItemStack(Material.WOOD);
        ItemMeta BuildUHCMeta = BuildUHC.getItemMeta();
      
        ItemStack Archer = new ItemStack(Material.BOW);
        ItemMeta ArcherMeta = Archer.getItemMeta();
      
        ItemStack Mcsg = new ItemStack(Material.FISHING_ROD);
        ItemMeta McsgMeta = Mcsg.getItemMeta();
      
        ItemStack NoDebuff = new ItemStack(Material.DIAMOND_SWORD);
        ItemMeta NoDebuffMeta = NoDebuff.getItemMeta();
      
        ItemStack Diamond = new ItemStack(Material.DIAMOND_CHESTPLATE);
        ItemMeta DiamondMeta = Diamond.getItemMeta();
      
        ItemStack Gapple = new ItemStack(Material.GOLDEN_APPLE);
        ItemMeta GappleMeta = Gapple.getItemMeta();
      
        BuildUHCMeta.setDisplayName(ChatColor.GOLD + "BuildUHC");
        BuildUHCMeta.setLore(Arrays.asList(new String[] { ChatColor.RED + "BuildUHC Duel." }));
        BuildUHC.setItemMeta(BuildUHCMeta);
        inv.setItem(0, BuildUHC);
      
        ArcherMeta.setDisplayName(ChatColor.GOLD + "Archer");
        ArcherMeta.setLore(Arrays.asList(ChatColor.RED + "Archer Duel."));
        Archer.setItemMeta(ArcherMeta);
        inv.setItem(1, Archer);
      
        McsgMeta.setDisplayName(ChatColor.GOLD + "MCSG");
        McsgMeta.setLore(Arrays.asList(new String[] { ChatColor.RED + "MCSG Duel." }));
        Mcsg.setItemMeta(McsgMeta);
        inv.setItem(2, Mcsg);
      
        NoDebuffMeta.setDisplayName(ChatColor.GOLD + "NoDebuff");
        NoDebuffMeta.setLore(Arrays.asList(ChatColor.RED + "NoDebuff Duel."));
        NoDebuff.setItemMeta(NoDebuffMeta);
        inv.setItem(3, NoDebuff);
      
        DiamondMeta.setDisplayName(ChatColor.GOLD + "Diamond");
        DiamondMeta.setLore(Arrays.asList(new String[] { ChatColor.RED + "Diamond Duel." }));
        Diamond.setItemMeta(DiamondMeta);
        inv.setItem(4, Diamond);
      
        GappleMeta.setDisplayName(ChatColor.GOLD + "Gapple");
        GappleMeta.setLore(Arrays.asList(ChatColor.RED + "Gapple Duel."));
        Gapple.setItemMeta(GappleMeta);
        inv.setItem(5, Gapple);
      
      
        if (cmd.getName().equalsIgnoreCase("join")) {
          p.openInventory(inv);
        }
        return true;
      }
    
      @EventHandler
      public void onClick(InventoryClickEvent e)
      {
            if ((e.getInventory().getTitle().equals(ChatColor.AQUA + "Duels."))) {
              
       
        Player p = (Player)e.getWhoClicked();
          e.setCancelled(true);
          /////////////////////////////////
          if (e.getSlot() == 0)
          {
            p.closeInventory();
            p.chat("/pro1vs1 join BuildUHC");
            return;
          }
          /////////////////////////////////////
          else if (e.getSlot() == 1)
          {
              p.closeInventory();
            p.chat("/pro1vs1 join Archer");
            return;
          }
          ////////////////////////////////////////
          else if (e.getSlot() == 2)
          {
              p.closeInventory();
            p.chat("/pro1vs1 join MCSG");
            return;
          }
        
          //////////////////////////////
          else if (e.getSlot() == 3)
          {
            p.closeInventory();
            p.chat("/pro1vs1 join NoDebuff");
            return;
          }
        
          //////////////////////////////////
          else if (e.getSlot() == 4)
          {
            p.closeInventory();
            p.chat("/pro1vs1 join Diamond");
            return;
          }
          ///////////////////////////////////
          else if (e.getSlot() == 5);
          {
           p.closeInventory();
           p.chat("/pro1vs1 join Gapple");
           return;
          }
        }
    
      }
    }
    
    
    It is supposed to open a gui ingame and execute the command "/pro1vs1 join <game>" depending on what one you click in ( in the GUI ) it does that, but it executes the command multiple times and I have no idea how to fix it, ive tried loads of things.

    Any help would be great, thanks.
     
  2. Online

    timtower Administrator Administrator Moderator

    @Maxxxy93 Probably because you register the events in the onCommand
     
  3. Offline

    Maxxxy93

    Were else would I register the events??
     
  4. Online

    timtower Administrator Administrator Moderator

    onEnable?
     
  5. Offline

    MrGeneralQ

    I know him. I explain to him
    UPDATE: @timtower it worked.
     
    Last edited: Aug 11, 2016
  6. @Maxxxy93
    Code:
    PluginManager pm = Bukkit.getServer().getPluginManager();
    public void onEnable() {
        pm.registerEvents(this, this);
    }
    
    or if using multiple classes
    Code:
    PluginManager pm = Bukkit.getServer().getPluginManager();
    public void onEnable() {
        pm.registerEvents(new classNameHere(), this);
    }
    
    I think you can now mark this thread as solved :3
     
  7. Offline

    Zombie_Striker

    @Mindlessmink
    No need to create a field just for plugin manager. If it only is going to be used once, just use
    Code:
    Bukkit.getServer().getPluginManager().registerEvents(this, this);
     
  8. @Zombie_Striker is correct, I just find it easier if registering multiple events.
     
  9. Offline

    Maxxxy93

    Thanks for all the help guys, but its fixed now :)
     
  10. @Maxxxy93
    Then mark this thread as solved.
     
Thread Status:
Not open for further replies.

Share This Page