Solved Someone could tell me I did wrong?

Discussion in 'Spigot Plugin Development' started by GekaLol2.0, Aug 25, 2017.

  1. Someone could tell me I did wrong?
    From now thanks
    Code (Text):
        @EventHandler
        public void ClickListener(PlayerInteractEvent event) {
            Player p = event.getPlayer();
                if ((p.getItemInHand().getType().equals(Material.EMERALD)) && (p.getItemInHand().hasItemMeta())) {
                  if ((p.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(color("&aEsmeralda"))))
                  {
                      int amount = p.getItemInHand().getAmount();
                      if (amount == 1)
                      {
                          ItemStack key = new ItemStack(Material.EMERALD, 1);
                          ItemMeta keyMeta = key.getItemMeta();
                          keyMeta.setDisplayName(color("&aEsmeralda"));
                          key.setItemMeta(keyMeta);
                      }
                  else
                  {
                    p.getItemInHand().setAmount(amount - 1);}
                  }
                }
     
  2. Assuming you get a NullPointerExcetion, do a null check.
     
  3. You did wrong.


    Glad I could help.
     
    • Funny Funny x 5
    • Like Like x 1
    • Winner Winner x 1
  4. this does not work

    p.getItemInHand().setAmount(amount - 1);}
     
  5. Code (Java):
    ItemStack is = p.getItemInHand();
    is.setAmount(amount - 1);
    p.setItemInHand(is);
     
    #5 stonar96, Aug 25, 2017
    Last edited: Aug 25, 2017
  6. Well that works.
    Now if the player does not have 20 emeralds the event is cancelled
    Is that so?

    if(is.getAmount()<= 20) {
    event.setCancelled(true);
    p.sendMessage("You lack emeralds");
    }
     
  7. Code (Text):
    if (is.getAmount() < 20) {
    event.setCancelled(true);
    // Send output message.
    } else {
    is.setAmount(is.getAmount() - 20);
    }
     
  8. as what said, do a null check. check if the item has displayname:
    Code (Java):
    item.getItemMeta().hasDisplayName();
     
  9. Lifeonblack, Like this?
    Code (Text):
                if ((p.getItemInHand().getType().equals(Material.EMERALD)) && (p.getItemInHand().hasItemMeta())) {
                      int amount = p.getItemInHand().getAmount();
                      if (amount == 1)
                      {
                          ItemStack key = new ItemStack(Material.EMERALD, 1);
                          ItemMeta keyMeta = key.getItemMeta();
                          keyMeta.setDisplayName(color("&aEsmeralda"));
                          key.setItemMeta(keyMeta);
                      }
                  else
                  {
                      ItemStack is = p.getItemInHand();
                      is.setAmount(amount - 20);
                      p.setItemInHand(is);
                     
                      if(is.getItemMeta().hasDisplayName()) {
                          if (is.getAmount() < 20) {
                              event.setCancelled(true);
                              p.sendMessage("You have no Emeralds");
                              } else {
                              is.setAmount(is.getAmount() - 20);
                              }
                      }
                     
                      }
                   
                  }
     
  10. Code (Text):
        @EventHandler
        public void ClickListener(PlayerInteractEvent event) {
            Player p = event.getPlayer();
           
            if((event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.ENDER_PORTAL_FRAME)) {  
                if((cooldown.containsKey(p.getUniqueId()) && cooldown.get(p.getUniqueId()) > System.currentTimeMillis())) {
                    event.setCancelled(true);
                    long remainingTime = cooldown.get(p.getUniqueId()) - System.currentTimeMillis();
                    p.sendMessage(color("&6Mic&ePixel&7» Por favor espera &c"+remainingTime/1000+"&7 segundos"));
                }else {      
                   
                if ((p.getItemInHand().getType().equals(Material.EMERALD)) && (p.getItemInHand().hasItemMeta())) {
                    event.setCancelled(true);
                    int amount = p.getItemInHand().getAmount();
                    if (amount == 20)
                    {
                      ItemStack key = new ItemStack(Material.EMERALD, 20);
                      ItemMeta keyMeta = key.getItemMeta();
                      keyMeta.setDisplayName(ChatColor.GREEN + "&aEsmeralda");
                      key.setItemMeta(keyMeta);
                      p.getInventory().removeItem(new ItemStack[] { key });
                      p.getPlayer().setItemInHand(new ItemStack(Material.AIR));    
                    }
                    else
                    {
                        ItemStack is = p.getItemInHand();
                        if (is.getAmount() < 20) {
                            p.sendMessage(color("&6Mic&ePixel&7» Te faltan mas &aEsmeraldas"));
                            Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Bukkit.getPluginManager().getPlugin("Scroll"), new Runnable()
                            {
                              public void run()
                              {
                            p.closeInventory();
                            event.setCancelled(true);
                              }
                            },1L);
                            } else {
                            is.setAmount(is.getAmount() - 20);
                            }
                    }                    
                         
       
                cooldown.put(p.getUniqueId(), System.currentTimeMillis() + (5 * 1000));
                      Inv1.show(event.getPlayer());              
                }else {
                    event.setCancelled(true);
                    p.sendMessage(color("&6Mic&ePixel&7» No tienes &aEsmeraldas&7"));
                }
                }
                }
          }