KitPvP Plugin Help 2

Discussion in 'Plugin Development' started by ztowne13, Mar 24, 2013.

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

    ztowne13

    OMG This code wont work! the /kitpvp wont work aswell as /sharp and the eventhandler... Any idaes why?
    Code:
    package me.ztowne13.zPvP2;
    
    import java.util.Map;
    import java.util.logging.Logger;
    
    
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.enchantments.Enchantment;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    public class Main extends JavaPlugin{
        public final Logger logger = Logger.getLogger("Minecraft");
        
        @Override
        public void onEnable(){
            PluginDescriptionFile pdfFile = this.getDescription();
            this.logger.info(pdfFile.getName() + " " + "Version" + pdfFile.getVersion()  + " " + "has been enabled!");
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
        
        @Override
        public void onDisable(){
            PluginDescriptionFile pdfFile = this.getDescription();
            this.logger.info(pdfFile.getName() + " " + "Version" + pdfFile.getVersion() + " " + "has been disabled!");
            saveConfig();
        }
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            Player player = (Player) sender;
            ItemStack helmet = new ItemStack(Material.IRON_HELMET);
            ItemStack chestplate = new ItemStack(Material.IRON_CHESTPLATE);
            ItemStack leggings = new ItemStack(Material.IRON_LEGGINGS);
            ItemStack boots = new ItemStack(Material.IRON_BOOTS);
            String version = this.getDescription().getVersion();
            if(commandLabel.equalsIgnoreCase("KitPvP")){
                if(args.length == 0){
                    player.sendMessage(ChatColor.BLUE + "zPvP Version: " + version + " Author: Ztowne13");
                }else if(args.length == 1 && args[0] == "help"){
                    player.sendMessage(ChatColor.AQUA + "----" + ChatColor.BLUE +  " PvP Help 1 " + ChatColor.AQUA + "----");
                    player.sendMessage(ChatColor.BLUE + "/PvP" + ChatColor.AQUA + " | Get The PvP Kit.");
                    player.sendMessage(ChatColor.BLUE + "/Archer" + ChatColor.AQUA + " | Get The Archer Kit.");
                    player.sendMessage(ChatColor.BLUE + "/Refill" + ChatColor.AQUA + " | Refill You Soup.");
                    player.sendMessage(ChatColor.BLUE + "/Diamond" + ChatColor.AQUA + " | Get Full Diamond.");
                    player.sendMessage(ChatColor.BLUE + "/Speed" + ChatColor.AQUA + " | Get Speed II.");
                    player.sendMessage(ChatColor.BLUE + "/Sharp" + ChatColor.AQUA + " | Get Sharpness On Your Sword.");
                    player.sendMessage(ChatColor.BLUE + "/Power" + ChatColor.AQUA + " | Get Power On Your Bow.");
                    //10
                    player.sendMessage(ChatColor.AQUA + "----" + ChatColor.BLUE + " /PvP Help 2 For More " + ChatColor.AQUA + "----");
                }else if(args.length == 3){
                    if(args[1] == "1"){
                        player.sendMessage(ChatColor.AQUA + "----" + ChatColor.BLUE +  " PvP Help 2 " + ChatColor.AQUA + "----");
                    }
                }else{
                    player.sendMessage(ChatColor.RED + "Too Many Arguments.");
                }
            }
            if(commandLabel.equalsIgnoreCase("PvP")){
                if(player.hasPermission("KitPvP.PvP")){
                    ItemStack mushroom = new ItemStack(Material.MUSHROOM_SOUP);
                    ItemStack sword = new ItemStack(Material.DIAMOND_SWORD);
                    player.getInventory().clear();
                    player.getInventory().addItem(sword);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().setHelmet(helmet);
                    player.getInventory().setChestplate(chestplate);
                    player.getInventory().setLeggings(leggings);
                    player.getInventory().setBoots(boots);
                    player.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 18000, 0));
                }else{
                    player.sendMessage(ChatColor.RED + "Insufficient Permissions To Use /PvP");
                }
            }
            if(commandLabel.equalsIgnoreCase("Archer")){
                if(player.hasPermission("KitPvP.Archer")){
                    ItemStack mushroom = new ItemStack(Material.MUSHROOM_SOUP);
                    ItemStack bow = new ItemStack(Material.BOW);
                    ItemStack arrow = new ItemStack(Material.ARROW);
                    ItemMeta meta = bow.getItemMeta();
                    meta.addEnchant(Enchantment.ARROW_INFINITE, 1 , true);
                    bow.setItemMeta(meta);
                    player.getInventory().clear();
                    player.getInventory().addItem(bow);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(mushroom);
                    player.getInventory().addItem(arrow);
                    player.getInventory().setHelmet(helmet);
                    player.getInventory().setChestplate(chestplate);
                    player.getInventory().setLeggings(leggings);
                    player.getInventory().setBoots(boots);
                    player.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 18000, 0));
                }else{
                    player.sendMessage(ChatColor.RED + "Insufficient Permissions To Use /Archer");
                }
            }
            if(commandLabel.equalsIgnoreCase("Diamond")){
                if(player.hasPermission("KitPvP.Diamond")){
                    ItemStack dhelm = new ItemStack(Material.DIAMOND_HELMET);
                    ItemStack dchest = new ItemStack(Material.DIAMOND_CHESTPLATE);
                    ItemStack dleg = new ItemStack(Material.DIAMOND_LEGGINGS);
                    ItemStack dboot = new ItemStack(Material.DIAMOND_BOOTS);
                    player.getInventory().setHelmet(dhelm);
                    player.getInventory().setChestplate(dchest);
                    player.getInventory().setLeggings(dleg);
                    player.getInventory().setBoots(dboot);
                }else{
                    player.sendMessage(ChatColor.RED + "Insufficient Permissions To Use /Diamond");
                }
            }
            if(commandLabel.equalsIgnoreCase("Speed")){
                if(player.hasPermission("KitPvP.Speed")){
                    player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 2400, 1));
                }else{
                    player.sendMessage(ChatColor.RED + "Insufficient Permissions To Use /Speed");
                }
            }
            if(commandLabel.equalsIgnoreCase("Strength")){
                if(player.hasPermission("KitPvP.Strength")){
                    player.removePotionEffect(PotionEffectType.INCREASE_DAMAGE);
                    player.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 600, 3));
                }else{
                    player.sendMessage(ChatColor.RED + "Insufficient Permissions To Use /Strength");
                }
            }
            if(commandLabel.equalsIgnoreCase("Sharp")){
                Map<Enchantment, Integer> Enchants = player.getInventory().getItemInHand().getEnchantments();
                Integer level = Enchants.get(Enchantment.DAMAGE_ALL);
                if(player.hasPermission("KitPvP.Sharp")){
                    if(player.getItemInHand().getType() == Material.DIAMOND_SWORD){
                        if(player.getItemInHand().containsEnchantment(Enchantment.DAMAGE_ALL)){
                            if(level == 1){
                                player.getItemInHand().addEnchantment(Enchantment.DAMAGE_ALL, 2);
                            }else if(level == 2){
                                player.getItemInHand().addEnchantment(Enchantment.DAMAGE_ALL, 3);
                            }else if (level == 0){
                                player.getItemInHand().addEnchantment(Enchantment.DAMAGE_ALL, 1);
                            }else{
                                player.sendMessage(ChatColor.RED + "This Sword Has Maximized Its Enchantments!");
                            }
                        }
                    }else{
                        player.sendMessage(ChatColor.RED + "Please Hold A Diamond Sword");
                    }
                }else{
                    player.sendMessage(ChatColor.RED + "Insufficient Permissions To Use /Sharp");
                }
            }
            if(commandLabel.equalsIgnoreCase("Power")){
                Map<Enchantment, Integer> Enchants = player.getInventory().getItemInHand().getEnchantments();
                Integer level = Enchants.get(Enchantment.ARROW_DAMAGE);
                if(player.hasPermission("KitPvP.Power")){
                    if(player.getItemInHand().getType() == Material.BOW){
                        if(player.getItemInHand().containsEnchantment(Enchantment.ARROW_DAMAGE)){
                            if(level == 1){
                                player.getItemInHand().addEnchantment(Enchantment.ARROW_DAMAGE, 2);
                            }else if(level == 2){
                                player.getItemInHand().addEnchantment(Enchantment.ARROW_DAMAGE, 3);
                            }else if(level == 0){
                                player.getItemInHand().addEnchantment(Enchantment.ARROW_DAMAGE, 1);
                            }else{
                                player.sendMessage(ChatColor.RED + "This Bow Has Maximized Its Enchantments!");
                            }
                        }
                    }else{
                        player.sendMessage(ChatColor.RED + "Please Hold A Bow");
                    }
                }else{
                    player.sendMessage(ChatColor.RED + "Insufficient Permissions To Use /Power");
                }
            }
            return false;
        }
        @EventHandler
        public void onPlayerDeath(PlayerDeathEvent e){
            Player player = (Player) e;
            Player killer = e.getEntity().getKiller();
            e.setDroppedExp(0);
            e.getDrops().clear();
            killer.sendMessage(ChatColor.RED + "You Recieved 15 Credits!");
            player.sendMessage(ChatColor.RED + "You Killer Recieved 15 Credits");
        }
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent e){
            Player player = (Player) e;
            player.sendMessage(ChatColor.RED + "Welcome To KitPvP!");
        }
    }
    
    YES THIS IS DIFFERENT FROM MY OTHER POST...
     
  2. Offline

    skipperguy12

    Dude! Just edit your post!! Read what I said on #1, you're not getting help because :

    A) You're not giving us errors
    B) Broken means nothing
    C) You're talking about nonexistant suff, eventhandler, what evernthandler!
     
  3. Offline

    Phinary

  4. Offline

    Chloe-chan

    This too.

    http://wiki.bukkit.org/Plugin_YAML

    Also, do NOT assume onCommand is only sent by players. Consoles can also send commands and it will go through the onCommand, therefore do not directly cast Player to sender without checks.

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

    fireblast709

    At least it is not so hard to specify what he is doing wrong:
    • If you have @EventHandlers, the class should implement Listener. In your case
      Code:
      public class Main extends JavaPlugin implements Listener
    • You have to register the Listener you just declared
      Code:
      Bukkit.getPluginManager().registerEvents(this, this);
    • You cannot cast PlayerEvents to Player (the '(Player) e'). To get the Player object, use e.getPlayer();
    • .getKiller() can return null, check if(killer != null) before using it
    • Don't blindly cast CommandSender to Player, it could be a ConsoleCommandSender or BlockCommandSender. This would throw a ClassCastException. So use this:
      Code:
      if(sender instanceof Player)
      {
          Player player = (Player) sender;
          // Continue code
      }
    • Compare Strings using either .equals(otherString) or .equalsIgnoreCase(otherString) (latter for ignoring case, duh :p). Using == is a reference comparison, and Strings do not share objects by default (afaik)
    • You check for args.length == 3 while only using the second argument. Not an error, but might give unwanted results
    • You might want to return true on success
    • Also, the reason the sharp command does not work is because you need to have an enchant on it to work (as level 0 does not exist afaik, enchantments start at level 1)
     
  6. Offline

    ztowne13

    Thankyou for all that helped i really apreciate it and sorry for just asking "help." There were no errors or anything thats why i just didnt know why nothing happened
     
  7. Offline

    lcpvp

    For soup, make it easier on yourself by doing a loop.

    Code:java
    1.  
    2. for (int i = 0; i < 17; i++)
    3. {
    4. player.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
     
  8. Offline

    ztowne13

    Ok ill look into that... Thanks. I do remember learning this
     
Thread Status:
Not open for further replies.

Share This Page