Command not working

Discussion in 'Plugin Development' started by iClipse, May 29, 2017.

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

    iClipse

    Both problems under the same class.
    Code:
    {
       
    @Override
    public void onEnable(){
        this.getCommand("dna").setExecutor(new Builder());
    }
    
    private List<String> effects;
    private List<Integer> cost;
    private List<Integer> power;
       
    private int speed1 = 1; //Positive
    private int speed2 = 2;
    private int speed3 = 4;
    
    private int strength1 = 1; //Positive
    private int strength2 = 3;
    private int strength3 = 5;
    
    private int regen1 = 1; //Positive
    private int regen2 = 2;
    private int regen3 = 4;
    
    private int resistance1 = 1; //Positive
    private int resistance2 = 2;
    private int resistance3 = 4;
    
    private int nightvision1 = 1; //Positive
    
    private int breathing1 = 1; //Positive
    private int breathing2 = 2;
    private int breathing3 = 3;
    
    private int miningfatigue1 = -1; //Negative
    private int miningfatigue2 = -2;
    
    private int blind1 = -2; //Negative
    
    private int slowness1 = -1; //Negative
    private int slowness2 = -2;
    private int slowness3 = -4;
    
    //                -----Costs-----
    
    private int speed1cost = 2;
    private int speed2cost = 3;
    private int speed3cost = 4;
    
    private int strength1cost = 2;
    private int strength2cost = 4;
    private int strength3cost = 7;
    
    private int regen1cost = 1;
    private int regen2cost = 3;
    private int regen3cost = 5;
    
    private int resistance1cost = 2;
    private int resistance2cost = 3;
    private int resistance3cost = 5;
    
    private int nightvision1cost = 3;
    
    private int breathing1cost = 2;
    private int breathing2cost = 3;
    private int breathing3cost = 4;
    
    private int miningfatigue1cost = 1;
    private int miningfatigue2cost = 2;
    
    private int blind1cost = 2;
    
    private int slowness1cost = 1;
    private int slowness2cost = 2;
    private int slowness3cost = 3;
    
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        if(sender instanceof Player){
           
            Bukkit.getLogger().warning("Test");
           
            Player p = (Player) sender;
            Inventory inv = Bukkit.createInventory(null, 98, ChatColor.AQUA + "Genetic Builder");
            ItemStack fill = new ItemStack(Material.QUARTZ_BLOCK, 1);
            ItemStack speed1 = new ItemStack(Material.RECORD_10, 1); 
            ItemStack speed2 = new ItemStack(Material.RECORD_10, 1); 
            ItemStack speed3 = new ItemStack(Material.RECORD_10, 1); 
            ItemStack strength1 = new ItemStack(Material.RECORD_11, 1);
            ItemStack strength2 = new ItemStack(Material.RECORD_11, 1);
            ItemStack strength3 = new ItemStack(Material.RECORD_11, 1);
            ItemStack regen1 = new ItemStack(Material.RECORD_12, 1);
            ItemStack regen2 = new ItemStack(Material.RECORD_12, 1);
            ItemStack regen3 = new ItemStack(Material.RECORD_12, 1);
            ItemStack resis1 = new ItemStack(Material.RECORD_3, 1);
            ItemStack resis2 = new ItemStack(Material.RECORD_3, 1);
            ItemStack resis3 = new ItemStack(Material.RECORD_3, 1);       
            ItemStack nvision = new ItemStack(Material.RECORD_4, 1);
            ItemStack breathing1 = new ItemStack(Material.RECORD_5, 1);
            ItemStack breathing2 = new ItemStack(Material.RECORD_5, 1);
            ItemStack breathing3 = new ItemStack(Material.RECORD_5, 1);
            ItemStack miningfatigue1 = new ItemStack(Material.RECORD_7, 1);
            ItemStack miningfatigue2 = new ItemStack(Material.RECORD_7, 1);
            ItemStack blind = new ItemStack(Material.RECORD_8, 1);
            ItemStack slowness1 = new ItemStack(Material.RECORD_9, 1);
            ItemStack slowness2 = new ItemStack(Material.RECORD_9, 1);
            ItemStack slowness3 = new ItemStack(Material.RECORD_9, 1);
           
            ItemMeta fillmeta = fill.getItemMeta();
            ItemMeta speed1meta = speed1.getItemMeta();
            ItemMeta speed2meta = speed2.getItemMeta();
            ItemMeta speed3meta = speed3.getItemMeta();
            ItemMeta strength1meta = strength1.getItemMeta();
            ItemMeta strength2meta = strength2.getItemMeta();
            ItemMeta strength3meta = strength3.getItemMeta();
            ItemMeta regen1meta = regen1.getItemMeta();
            ItemMeta regen2meta = regen2.getItemMeta();
            ItemMeta regen3meta = regen3.getItemMeta();
            ItemMeta resis1meta = resis1.getItemMeta();
            ItemMeta resis2meta = resis2.getItemMeta();
            ItemMeta resis3meta = resis3.getItemMeta();
            ItemMeta nvisionmeta = nvision.getItemMeta();
            ItemMeta breathing1meta = breathing1.getItemMeta();
            ItemMeta breathing2meta = breathing2.getItemMeta();
            ItemMeta breathing3meta = breathing3.getItemMeta();
            ItemMeta miningfatigue1meta = miningfatigue1.getItemMeta();
            ItemMeta miningfatigue2meta = miningfatigue2.getItemMeta();
            ItemMeta blindmeta = blind.getItemMeta();
            ItemMeta slowness1meta = slowness1.getItemMeta();
            ItemMeta slowness2meta = slowness2.getItemMeta();
            ItemMeta slowness3meta = slowness3.getItemMeta();
           
            fillmeta.setDisplayName("");   
            speed1meta.setDisplayName(ChatColor.GRAY + "Faster Running I " + ChatColor.GREEN + "(+1)" + ChatColor.GOLD + "(2 Coins)");
            speed2meta.setDisplayName(ChatColor.GRAY + "Faster Running II " + ChatColor.GREEN + "(+2)" + ChatColor.GOLD + "(3 Coins)");
            speed3meta.setDisplayName(ChatColor.GRAY + "Faster Running III " + ChatColor.GREEN + "(+4)" + ChatColor.GOLD + "(5 Coins)");
            strength1meta.setDisplayName(ChatColor.RED + "Buffer Arms I " + ChatColor.GREEN + "(+1)" + ChatColor.GOLD + "(2 Coins)");
            strength2meta.setDisplayName(ChatColor.RED + "Buffer Arms II " + ChatColor.GREEN + "(+3)" + ChatColor.GOLD + "(4 Coins)");
            strength3meta.setDisplayName(ChatColor.RED + "Buffer Arms III " + ChatColor.GREEN + "(+5)" + ChatColor.GOLD + "(7 Coins)");
            regen1meta.setDisplayName(ChatColor.RED + "Quick HealingI " + ChatColor.GREEN + "(+1)" + ChatColor.GOLD + "(1 Coins)"); 
            regen2meta.setDisplayName(ChatColor.RED + "Quick HealingII " + ChatColor.GREEN + "(+2)" + ChatColor.GOLD + "(3 Coins)");
            regen3meta.setDisplayName(ChatColor.RED + "Quick HealingIII " + ChatColor.GREEN + "(+4)" + ChatColor.GOLD + "(5 Coins)");
            resis1meta.setDisplayName(ChatColor.GOLD + "Thicker Skin I " + ChatColor.GREEN + "(+1)" + ChatColor.GOLD + "(2 Coins)");
            resis2meta.setDisplayName(ChatColor.GOLD + "Thicker Skin II " + ChatColor.GREEN + "(+2)" + ChatColor.GOLD + "(3 Coins)");
            resis3meta.setDisplayName(ChatColor.GOLD + "Thicker Skin III " + ChatColor.GREEN + "(+4)" + ChatColor.GOLD + "(5 Coins)");
            nvisionmeta.setDisplayName(ChatColor.AQUA + "Enhanced Vision " + ChatColor.GREEN + "+1" + ChatColor.GOLD + "(3 Coins)");
            breathing1meta.setDisplayName(ChatColor.BLUE + "Strenthened Lungs I " + ChatColor.GREEN + "(+1)" + ChatColor.GOLD + "(2 Coins)");
            breathing2meta.setDisplayName(ChatColor.BLUE + "Strenthened Lungs II " + ChatColor.GREEN + "(+1)" + ChatColor.GOLD + "(3 Coins)");
            breathing3meta.setDisplayName(ChatColor.BLUE + "Strenthened Lungs III " + ChatColor.GREEN + "(+2)" + ChatColor.GOLD + "(4 Coins)");
            miningfatigue1meta.setDisplayName(ChatColor.DARK_GREEN + "Mining Fatigue I " + ChatColor.RED + "(-1)" + ChatColor.GOLD + "(1 Coins)");
            miningfatigue2meta.setDisplayName(ChatColor.DARK_GREEN + "Mining Fatigue II " + ChatColor.RED + "(-2)" + ChatColor.GOLD + "(2 Coins)");
            blindmeta.setDisplayName(ChatColor.BLACK + "Blindness" + ChatColor.RED + "(-2)" + ChatColor.GOLD + "(2 Coins)");
            slowness1meta.setDisplayName(ChatColor.DARK_RED + "Slowed Legs I" + ChatColor.RED + "(-1)" + ChatColor.GOLD + "(1 Coins)");
            slowness2meta.setDisplayName(ChatColor.DARK_RED + "Slowed Legs II" + ChatColor.RED + "(-2)" + ChatColor.GOLD + "(2 Coins)");
            slowness3meta.setDisplayName(ChatColor.DARK_RED + "Slowed Legs III" + ChatColor.RED + "(-4)" + ChatColor.GOLD + "(3 Coins)");
           
            speed1.setItemMeta(speed1meta);
            speed2.setItemMeta(speed2meta);
            speed3.setItemMeta(speed3meta);
            strength1.setItemMeta(strength1meta);
            strength2.setItemMeta(strength2meta);
            strength3.setItemMeta(strength3meta);
            regen1.setItemMeta(regen1meta);
            regen2.setItemMeta(regen2meta);
            regen3.setItemMeta(regen3meta);
            resis1.setItemMeta(resis1meta);
            resis2.setItemMeta(resis2meta);
            resis3.setItemMeta(resis3meta);
            nvision.setItemMeta(nvisionmeta);
            breathing1.setItemMeta(breathing1meta);
            breathing2.setItemMeta(breathing2meta);
            breathing3.setItemMeta(breathing3meta);
            miningfatigue1.setItemMeta(miningfatigue1meta);
            miningfatigue2.setItemMeta(miningfatigue2meta);
            blind.setItemMeta(blindmeta);
            slowness1.setItemMeta(slowness1meta);
            slowness2.setItemMeta(slowness2meta);
            slowness3.setItemMeta(slowness3meta);
           
            inv.setItem(0, fill);
            inv.setItem(1, fill);
            inv.setItem(2, fill);
            inv.setItem(3, fill);
            inv.setItem(4, fill);
            inv.setItem(5, fill);
            inv.setItem(6, fill);
            inv.setItem(7, fill);
            inv.setItem(8, fill);
           
            inv.setItem(9, fill);
            inv.setItem(12, speed1);
            inv.setItem(13, speed2);
            inv.setItem(14, speed3);
            inv.setItem(17, fill);
           
            inv.setItem(18, fill);
            inv.setItem(21, strength1);
            inv.setItem(22, strength2);
            inv.setItem(23, strength3);
            inv.setItem(26, fill);
           
            inv.setItem(27, fill);
            inv.setItem(30, regen1);
            inv.setItem(31, regen2);
            inv.setItem(32, regen3);
            inv.setItem(35, fill);
           
            inv.setItem(36, fill);
            inv.setItem(39, resis1);
            inv.setItem(40, resis2);
            inv.setItem(41, resis3);
            inv.setItem(44, fill);
           
            inv.setItem(45, fill);
            inv.setItem(48, fill);
            inv.setItem(49, nvision);
            inv.setItem(50, fill);
            inv.setItem(53, fill);
           
            inv.setItem(54, fill);
            inv.setItem(57, breathing1);
            inv.setItem(58, breathing2);
            inv.setItem(59, breathing3);
            inv.setItem(62, fill);
           
            inv.setItem(63, fill);
            inv.setItem(66, miningfatigue1);
            inv.setItem(67, fill);
            inv.setItem(68, miningfatigue2);
            inv.setItem(71, fill);
           
            inv.setItem(72, fill);
            inv.setItem(75, fill);
            inv.setItem(76, blind);
            inv.setItem(77, fill);
            inv.setItem(80, fill);
           
            inv.setItem(81, fill);
            inv.setItem(84, slowness1);
            inv.setItem(85, slowness2);
            inv.setItem(86, slowness3);
            inv.setItem(89, fill);
           
            inv.setItem(90, fill);
            inv.setItem(91, fill);
            inv.setItem(92, fill);
            inv.setItem(93, fill);
            inv.setItem(94, fill);
            inv.setItem(95, fill);
            inv.setItem(96, fill);
            inv.setItem(97, fill);
            inv.setItem(98, fill);
           
            p.openInventory(inv);
           
           
           
            }
       
        return false;
        }
    }
    
    Alright, now for the problems. The @Override is underlines and does nothing (Command doesn't work)
    And then this is the most inneficiant code ever, so I was wondering if someone can help me with a forEach loops, since anything that shows up on google doesnt explain enough for me to understand
     
  2. Offline

    Caderape2

    @iClipse
    It look like it's your main class, extending javaplugin, so the override shouldn't be underlines.
    what is the command that execute the onCommand of this class ?

    I would recommand you to create a method that set the itemMeta.

    Like a 'private ItemStack myItem(Material material, int amount, short data, String displayName);'

    That would help a lot your code.

    I never tried an inventory with a 98 size, that really works ? And if tht works, that should be 99, as inventory size is a multiple of 9

    And you don't have to create the inventory again and again. Just create it once in your onEnable and save it in a field
     
    Last edited: May 29, 2017
    iClipse likes this.
  3. Offline

    iClipse

    Computers start counting at 0, no?

    Anyways, my main class is a seperate class, this is the core plugin wher eeverything in my server is put. Nothing more, nothing less, meaning my main class is not this one.

    And the onEnable() thing is actually smart, thanks.

    Yeah I'll try that. I didn't actually think of making new methods. I'ma go do my stuff and reply if I need help later.
     
  4. Offline

    Zombie_Striker

    @iClipse
    Here is an easy way to add all the fill lines
    Code:
    for(int i = 0; i < 98;i++){
     if(i%9=0||i%9==8||i<9||i>89)
    inv.setItem(i, fill);
    }
    With this, all lines setting the slots to fill can be deleted.

    All those fields at the top do not seem to be use. Even if they were, based on the names and values, they seem pointless. Try removing them.

    Instead of having all those lines for setting the data for the item, create a method that does all that for you. Use this top create the items.
    Code:
    public Itemstack createItem(Material m, String displayname){ 
    ItemStack item= new ItemStack(m);
    ItemMeta im = item.getItemMeta();
    im.setDisplayName(displayname);
    item.setItemMeta(im);
    return item;
    }
    With all of this, you should be able to reduce your class to about 30 lines of code.
     
  5. Offline

    iClipse

    @Caderape2
    Yeah I learned quite a bit from last time I was here (A month or so)

    What I got so far is this (I redid a lot of it)
    Code:
    {
       
    @Override
    public void onEnable(){
        this.getCommand("dna").setExecutor(new Builder());
       
    }
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        if(sender instanceof Player){   
            Bukkit.getLogger().warning("Test");       
            Player p = (Player) sender;
                   
            Inventory inv = Bukkit.createInventory(null, 71, ChatColor.AQUA + "Genetic Builder");
           
            ItemStack speed1 = newItem(new ItemStack(Material.RECORD_10), 2, 1, ChatColor.GREEN, ChatColor.GRAY, "Faster Running I");
            ItemStack speed2 = newItem(new ItemStack(Material.RECORD_10), 3, 2, ChatColor.GREEN, ChatColor.GRAY, "Faster Running II");
            ItemStack speed3 = newItem(new ItemStack(Material.RECORD_10), 4, 4, ChatColor.GREEN, ChatColor.GRAY, "Faster Running III");
            ItemStack strength1 = newItem(new ItemStack(Material.RECORD_11), 2, 1, ChatColor.GREEN, ChatColor.DARK_RED, "Buff Arms I" );
            ItemStack strength2 = newItem(new ItemStack(Material.RECORD_11), 4, 3, ChatColor.GREEN, ChatColor.DARK_RED, "Buff Arms II" );
            ItemStack strength3 = newItem(new ItemStack(Material.RECORD_11), 7, 5, ChatColor.GREEN, ChatColor.DARK_RED, "Buff Arms III" );
            ItemStack regen1 = newItem(new ItemStack(Material.RECORD_12), 1, 1, ChatColor.GREEN, ChatColor.RED, "Quick Healing 1");
            ItemStack regen2 = newItem(new ItemStack(Material.RECORD_12), 2, 2, ChatColor.GREEN, ChatColor.RED, "Quick Healing 1");
            ItemStack regen3 = newItem(new ItemStack(Material.RECORD_12), 4, 3, ChatColor.GREEN, ChatColor.RED, "Quick Healing 1");
            ItemStack resis1 = newItem(new ItemStack(Material.RECORD_3), 1, 2, ChatColor.GREEN, ChatColor.DARK_GRAY, "Thick Skin I");
            ItemStack resis2 = newItem(new ItemStack(Material.RECORD_3), 2, 3, ChatColor.GREEN, ChatColor.DARK_GRAY, "Thick Skin II");
            ItemStack resis3 = newItem(new ItemStack(Material.RECORD_3), 4, 5, ChatColor.GREEN, ChatColor.DARK_GRAY, "Thick Skin III");
            ItemStack nightvision = newItem(new ItemStack(Material.RECORD_4), 1, 3, ChatColor.GREEN, ChatColor.WHITE, "Night Vision I");
            ItemStack breathing1 = newItem(new ItemStack(Material.RECORD_5), 1, 1, ChatColor.GREEN, ChatColor.AQUA, "Strong Lungs I");
            ItemStack breathing2 = newItem(new ItemStack(Material.RECORD_5), 2, 1, ChatColor.GREEN, ChatColor.AQUA, "Strong Lungs II");
            ItemStack breathing3 = newItem(new ItemStack(Material.RECORD_5), 3, 2, ChatColor.GREEN, ChatColor.AQUA, "Strong Lungs III");
            ItemStack miningfatigue1 = newItem(new ItemStack(Material.RECORD_6), 1, 1, ChatColor.RED, ChatColor.DARK_GREEN, "Slow Arms I");
            ItemStack miningfatigue2 = newItem(new ItemStack(Material.RECORD_6), 2, 2, ChatColor.RED, ChatColor.DARK_GREEN, "Slow Arms II");
            ItemStack blind1 = newItem(new ItemStack(Material.RECORD_7), 2, 1, ChatColor.RED, ChatColor.BLACK, "Blindness I");
            ItemStack slow1 = newItem(new ItemStack(Material.RECORD_8), 1, 1, ChatColor.RED, ChatColor.DARK_GRAY, "Slowness I");
            ItemStack slow2 = newItem(new ItemStack(Material.RECORD_8), 2, 2, ChatColor.RED, ChatColor.DARK_GRAY, "Slowness II");
            ItemStack slow3 = newItem(new ItemStack(Material.RECORD_8), 3, 4, ChatColor.RED, ChatColor.DARK_GRAY, "Slowness III");
           
           
            }
        return false;
        }
    private ItemStack newItem(ItemStack item, int cost, int power,ChatColor pos, ChatColor nameColor, String name){
        ItemStack theNewStuff = item;
        ItemMeta theNewMeta = theNewStuff.getItemMeta();
        theNewMeta.setUnbreakable(true);
        theNewMeta.setDisplayName(nameColor + name + pos + " (" + power + ")" + ChatColor.GOLD + "(" + cost + " Coins)");
        theNewStuff.setItemMeta(theNewMeta);
        return theNewStuff;
    }
    
    }
    
    Now, the integers were for the builder itself, where the first set were for balancing, and the second set is for other purposes. I'm not doing that anymore, but that is just a brief explanation. I'll try doing it a different way.

    What about the command? Any ideas about making it work?
     
  6. Offline

    Caderape2

    @iClipse since it's not your mainClass, your class have to implements CommandExecutor. And you have to register the command for access to this class. like you did for the dna command.
    The stuff i dun understand, its how u have access to the this.getCommand if it's not your main class. do you extends this class with your main class ? if so, be care to not override the onEnable method in your main class.

    Edit: Your inventory size is still not good, should be 72 and not 71 (9*8)
     
    Last edited: May 30, 2017
  7. Offline

    iClipse

    Thanks
    I thought I do 71 since computers start acounting at 0... Ill change it
     
  8. Offline

    Caderape2

    @iClipse yep, but not for the size of the inventory
     
  9. Offline

    iClipse

    ok thanks
     
Thread Status:
Not open for further replies.

Share This Page