Solved Small problem

Discussion in 'Plugin Development' started by CraterHater, Jun 13, 2015.

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

    CraterHater

    I am making a villager shop and i made a villager that should be selling bread and carrots. Have you guys got any idea why it is selling bread but no carrots? It probably is something really silly i can't figure out. here's my code:
    Code:
     private void openGUI5(Player player) {
                Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_RED + "FoodMerchant");
          
                ItemStack Bread = new ItemStack (Material.BREAD);
                ItemMeta BreadMeta = Bread.getItemMeta();
    
                ItemStack Carrot = new ItemStack (Material.CARROT);
                ItemMeta CarrotMeta = Carrot.getItemMeta();
         
                CarrotMeta.setDisplayName(ChatColor.BLUE + "5 Carrots =-+-= Cost 5 Tokens");
                Carrot.setItemMeta(CarrotMeta);
                BreadMeta.setDisplayName(ChatColor.BLUE + "10 Breads =-+-= Cost 5 Tokens");
                Bread.setItemMeta(BreadMeta);
    
                inv.setItem(0, Bread);
                inv.setItem(1, Carrot);
    
                player.openInventory(inv);
            }
            @EventHandler
            public void onInventoryClick5(InventoryClickEvent event) {
                if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("FoodMerchant"))
                        return;
                Player player = (Player) event.getWhoClicked();
                event.setCancelled(true);
                if(event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR ||!event.getCurrentItem().hasItemMeta()) {
                    player.closeInventory();
                    return;
                }
                switch (event.getCurrentItem().getType()) {
                case BREAD:
                    String p = player.getName();
                    int value = getConfig().getInt(p + ".Tokens");
                    if(value > 4) {
                        player.sendMessage("§bSuccesfully purchased ten bread");
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        Player p1 = player.getPlayer();
                        takeTokens(p1, 5);
                       //Higher than 5
                    } else {
                        player.sendMessage("You do not have §b[5 Tokens]");
                       //Not higher than 5 also it could be 5
                    }
    
                    break;
               
                case CARROT:
                    String p3 = player.getName();
                    int value1 = getConfig().getInt(p3 + ".Tokens");
                    if(value1 > 4) {
                        player.sendMessage("§bSuccesfully purchased five carrots");
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        Player p1 = player.getPlayer();
                        takeTokens(p1, 5);
                       //Higher than 5
                    } else {
                        player.sendMessage("You do not have §b[5 Tokens]");
                       //Not higher than 5 also it could be 5
                    }
                   
                  
                    break;
    
                   
                default:
                    player.closeInventory();
                    break;
     
  2. Offline

    mine-care

    Do we want to imagine what methods openGUI4,3,2,1,0 are? same aplies for onInventoryClick4,3,2,1,0.
    I dont see any reason why it should not display carrots :/ Also have a look here:
    http://bukkit.org/threads/class-custom-vilagers-trade-items.338739/
    This is a resource i publiched in the past that will help you make a villager actually sell items without having to open custom inventories and so on.
     
  3. Offline

    CraterHater

    Here's the rest of the class. Sorry if it is a bit messy but i know how i did it so yeah XD
    Code:
    package First;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.DyeColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.LivingEntity;
    import org.bukkit.entity.Monster;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerInteractEntityEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.material.Dye;
    import org.bukkit.plugin.java.JavaPlugin;
    public class first extends JavaPlugin implements Listener{
       
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    
    //this i will be using later:
           // if (cmd.getName().equalsIgnoreCase("Factions")) {
            //    sender.sendMessage(ChatColor.LIGHT_PURPLE + "You warped to Factions");
            //    String p = sender.getName();
            //    Location loc2 = new Location(Bukkit.getWorld("Factions"), 56, 149, 92);
            //    p.teleport(loc2); 
            {
           
            if (cmd.getName().equalsIgnoreCase("Tokens")) {
                String p = sender.getName();
                String amount = getConfig().getString(p + ".Tokens");
                sender.sendMessage("§b§l► §bTokens: §6§l" + amount);
            }
            return true;
            }
           
    }
       
       
        @EventHandler
         public void onDeath(PlayerDeathEvent event) {
             Player player = event.getEntity();
             player.getInventory().clear();
             player.getInventory().addItem(new ItemStack(Material.WATCH));
            
         }
        public void onEnable(){
            getServer().getPluginManager().registerEvents(this, this);
      
        }
        private void openGUI(Player player) {
            Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_RED + "Server Menu");
      
            ItemStack survival = new ItemStack (Material.DIAMOND_SWORD);
            ItemMeta survivalMeta = survival.getItemMeta();
            ItemStack creative = new ItemStack (Material.DRAGON_EGG);
            ItemMeta creativeMeta = creative.getItemMeta();
            ItemStack adventure = new ItemStack (Material.BOW);
            ItemMeta adventureMeta = adventure.getItemMeta();
            ItemStack spectator = new ItemStack (Material.SKULL);
            ItemMeta spectatorMeta = spectator.getItemMeta();
      
            survivalMeta.setDisplayName(ChatColor.DARK_BLUE + "PvpArena");
            survival.setItemMeta(survivalMeta);
      
            creativeMeta.setDisplayName(ChatColor.DARK_GREEN + "Mount Shop");
            creative.setItemMeta(creativeMeta);
           
            adventureMeta.setDisplayName(ChatColor.DARK_PURPLE + "Classes");
            adventure.setItemMeta(adventureMeta);
           
            spectatorMeta.setDisplayName(ChatColor.DARK_PURPLE + "Arcane");
            spectator.setItemMeta(spectatorMeta);
      
            inv.setItem(2, survival);
            inv.setItem(4, creative);
            inv.setItem(6, adventure);
            inv.setItem(8, spectator);
      
            player.openInventory(inv);
        }
        @EventHandler
        public void onInventoryClick(InventoryClickEvent event) {
            if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Server Menu"))
                    return;
            Player player = (Player) event.getWhoClicked();
            event.setCancelled(true);
            if(event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR ||!event.getCurrentItem().hasItemMeta()) {
                player.closeInventory();
                return;
            }
            switch (event.getCurrentItem().getType()) {
            case DIAMOND_SWORD:
                Location loc = new Location(Bukkit.getWorld("WarpPvp"), 0, 100, 0);
                player.teleport(loc);
                player.closeInventory();
                break;
            case DRAGON_EGG:
                player.closeInventory();
                openGUI1(player);
                break;
            case BOW:
                player.closeInventory();
                Location loc1 = new Location(Bukkit.getWorld("WarpPvp"), 113, 23, 2078);
                player.teleport(loc1);
                break;
            case SKULL:
                player.closeInventory();
                Player p = player.getPlayer();
                p.sendMessage(ChatColor.DARK_PURPLE + "Robin is still developing it.");
                break;
               
            default:
                player.closeInventory();
                break;
            }
        }
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
            event.getPlayer().getInventory().remove(Material.WATCH);
            event.getPlayer().getInventory().addItem(new ItemStack(Material.WATCH));
      
        }
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent event) {
            Action a = event.getAction();
            ItemStack is = event.getItem();
      
            if(a == Action.PHYSICAL ||  is == null ||  is.getType()==Material.AIR)
                return;
      
            if(is.getType()==Material.WATCH)
                openGUI(event.getPlayer());
          
      
        }
        @EventHandler
        public void onPlayerJoinEvent(PlayerJoinEvent event) {
            event.getPlayer().sendMessage(ChatColor.DARK_RED + "Welcome!");
           
      
      
        }
        private void openGUI1(Player player) {
            Inventory inv1 = Bukkit.createInventory(null, 9, ChatColor.DARK_RED + "Creature Menu");
      
            ItemStack dragon = new ItemStack (Material.DRAGON_EGG);
            ItemMeta dragonMeta = dragon.getItemMeta();
      
            dragonMeta.setDisplayName(ChatColor.DARK_PURPLE + "Dragon Egg Click to purchase");
            dragon.setItemMeta(dragonMeta);
           
            ItemStack Back = new ItemStack (Material.WOOL);
            Dye dye = new Dye();
            dye.setColor(DyeColor.RED);
            ItemMeta BackMeta = Back.getItemMeta();
           
            BackMeta.setDisplayName(ChatColor.RED + "Back");
            Back.setItemMeta(BackMeta);
      
            inv1.setItem(3, dragon);
            inv1.setItem(8, Back);
      
            player.openInventory(inv1);
      
        }
        @EventHandler
        public void onInventoryClick1(InventoryClickEvent event) {
            if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Creature Menu"))
                    return;
            Player player = (Player) event.getWhoClicked();
            event.setCancelled(true);
            if(event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR ||!event.getCurrentItem().hasItemMeta()) {
                player.closeInventory();
                return;
            }
            switch (event.getCurrentItem().getType()) {
            case DRAGON_EGG:
                String p = player.getName();
                int value = getConfig().getInt(p + ".Tokens");
                if(value > 200) {
                    player.sendMessage("§bSuccesfully purchased a dragon egg");
                    player.getInventory().addItem(new ItemStack(Material.DRAGON_EGG));
                    Player p1 = player.getPlayer();
                    takeTokens(p1, 200);
                   //Higher than 200
                } else {
                    player.sendMessage("You do not have §b[200 Tokens]");
                   //Not higher than 200 also it could be 200
                }
               
                break;
           
    
            case WOOL:
                player.closeInventory();
                openGUI(player);
                break;
            default:
                player.closeInventory();
                break;
            }
        }
               
     
          
           
            @EventHandler
            public void onInventoryClick2(InventoryClickEvent event) {
                if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("Class Menu"))
                        return;
                Player player = (Player) event.getWhoClicked();
                event.setCancelled(true);
                if(event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR ||!event.getCurrentItem().hasItemMeta()) {
                    player.closeInventory();
                    return;
                }
                switch (event.getCurrentItem().getType()) {
                   
                case WOOL:
                    player.closeInventory();
                    openGUI(player);
                    break;
                default:
                    player.closeInventory();
                    break;
                }
        }
           
            //One on twenty when killing a monster for one token
                @EventHandler
                public void onKill(EntityDeathEvent e){
                    if (e.getEntity() instanceof Monster) {
                    Monster m = (Monster) e.getEntity();
                    if (m.getKiller() instanceof Player) {
                        Player p = m.getKiller();
                        int response = (int)(Math.random() * 10) + 1;
                        if(response == 1) {
                            giveTokens(p, 1);
                            p.sendMessage(ChatColor.RED + "You scavenged one token");
    
                        } else if (response == 2) {
                            giveTokens(p, 2);
                            p.sendMessage(ChatColor.RED + "You scavenged two tokens");
                        } else if (response == 3) {
                            giveTokens(p, 3);
                            p.sendMessage(ChatColor.RED + "You scavenged three tokens");
                        } else if (response == 4) {
                            giveTokens(p, 1);
                            p.sendMessage(ChatColor.RED + "You scavenged one token");
                        } else if (response == 5) {
                            giveTokens(p, 1);
                            p.sendMessage(ChatColor.RED + "You scavenged one token");
                        } else if (response == 6) {
                        } else if (response == 7) {
                        } else if (response == 8) {
                        } else if (response == 9) {
                        } else if (response == 10) {       
                        } else if (response == 11) {       
                        } else if (response == 12) {
                        } else if (response == 13) {
                        } else if (response == 14) {
                        } else if (response == 15) {
                        } else if (response == 16) {
                        } else if (response == 17) {
                        } else if (response == 18) {
                        } else if (response == 19) {
                        } else if (response == 20) {
                        } else if (response == 21) {
                        } else if (response == 22) {
                        } else if (response == 23) {
                        } else if (response == 24) {
                        } else if (response == 25) {       
                        } else if (response == 26) {       
                        } else if (response == 27) {
                        } else if (response == 28) {
                        } else if (response == 29) {
                        } else if (response == 30) {
                           
                           
    
                        }
                        
                        }
                    }
                }
               
    
    public void giveTokens(Player p, int i) {
        getConfig().set(p.getName() + ".Tokens", getConfig().getInt(p.getName() + ".Tokens", 0) + i);
        saveConfig();
    }
    public void takeTokens(Player p, int i) {
        getConfig().set(p.getName() + ".Tokens", getConfig().getInt(p.getName() + ".Tokens", 0) - i);
        saveConfig();
        p.sendMessage("5 Tokens Taken");
    }
    {
    }
    
        @EventHandler
        public void onPlayerInteract1(PlayerInteractEvent event) {
            Action a = event.getAction();
            ItemStack is = event.getItem();
      
            if(a == Action.PHYSICAL ||  is == null ||  is.getType()==Material.AIR)
                return;
      
            if(is.getType()==Material.BOW);
            Player p = event.getPlayer();
            if(p.hasPermission("Class.Scout"));
                //p.sendMessage("You've permission");
        }
           
         
            @EventHandler
            public void onRightClick(PlayerInteractEntityEvent event) {
              Player p = event.getPlayer();
              Entity entity = event.getRightClicked();
              if (((LivingEntity)entity).getCustomName().equalsIgnoreCase("FoodMerchant")) {
                  event.setCancelled(true);
                  openGUI5(p);
                 
                 
              }
          }
            private void openGUI5(Player player) {
                Inventory inv = Bukkit.createInventory(null, 9, ChatColor.DARK_RED + "FoodMerchant");
          
                ItemStack Bread = new ItemStack (Material.BREAD);
                ItemMeta BreadMeta = Bread.getItemMeta();
    
                ItemStack Carrot = new ItemStack (Material.CARROT);
                ItemMeta CarrotMeta = Carrot.getItemMeta();
         
                CarrotMeta.setDisplayName(ChatColor.BLUE + "5 Carrots =-+-= Cost 5 Tokens");
                Carrot.setItemMeta(CarrotMeta);
                BreadMeta.setDisplayName(ChatColor.BLUE + "10 Breads =-+-= Cost 5 Tokens");
                Bread.setItemMeta(BreadMeta);
    
                inv.setItem(0, Bread);
                inv.setItem(1, Carrot);
    
                player.openInventory(inv);
            }
            @EventHandler
            public void onInventoryClick5(InventoryClickEvent event) {
                if(!ChatColor.stripColor(event.getInventory().getName()).equalsIgnoreCase("FoodMerchant"))
                        return;
                Player player = (Player) event.getWhoClicked();
                event.setCancelled(true);
                if(event.getCurrentItem()==null || event.getCurrentItem().getType()==Material.AIR ||!event.getCurrentItem().hasItemMeta()) {
                    player.closeInventory();
                    return;
                }
                switch (event.getCurrentItem().getType()) {
                case BREAD:
                    String p = player.getName();
                    int value = getConfig().getInt(p + ".Tokens");
                    if(value > 4) {
                        player.sendMessage("§bSuccesfully purchased ten bread");
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        player.getInventory().addItem(new ItemStack(Material.BREAD));
                        Player p1 = player.getPlayer();
                        takeTokens(p1, 5);
                       //Higher than 5
                    } else {
                        player.sendMessage("You do not have §b[5 Tokens]");
                       //Not higher than 5 also it could be 5
                    }
    
                    break;
               
                case CARROT:
                    String p3 = player.getName();
                    int value1 = getConfig().getInt(p3 + ".Tokens");
                    if(value1 > 4) {
                        player.sendMessage("§bSuccesfully purchased five carrots");
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        player.getInventory().addItem(new ItemStack(Material.CARROT));
                        Player p1 = player.getPlayer();
                        takeTokens(p1, 5);
                       //Higher than 5
                    } else {
                        player.sendMessage("You do not have §b[5 Tokens]");
                       //Not higher than 5 also it could be 5
                    }
                   
                  
                    break;
    
                   
                default:
                    player.closeInventory();
                    break;
                }
            }
          
       
            {
    }
    }
    
         
    Solved! I found out what was wrong. Bukkit doesn't know "Carrot" It should've been CARROT_ITEM

    EDIT by Timtower: merged posts
     
    Last edited by a moderator: Jun 13, 2015
Thread Status:
Not open for further replies.

Share This Page