@Override
 protected void handleClick(GUI gui, Player p, ItemStack item) {
   Balloons config = plugin.getBalloons();
   if (gui.getName().equals(Placeholders.parse(config.getGuiName(), p))) {
     CosmeticsAPI api = plugin.getApi();
     if (config.getHomeItem().getItem().isSimilar(item)) {
       if (plugin.getBabies().getGuiClickSound() != null)
         Sounds.playSound(p, plugin.getBabies().getGuiClickSound());
       CosmeticsGuiHandler.open(p);
       return;
     }
     if (config.getRemoveItem().getItem().isSimilar(item)) {
       if (api.hasBalloon(p)) api.getBalloon(p).remove();
       Sounds.playSound(p, config.getRemoveSound());
       p.closeInventory();
       return;
     }
     if (Methods.isNoPermissionItem(config.getNoPermissionItem(), item)) {
       plugin.informPlayerNoPermission(p, config.getNoPermissionMessage());
       return;
     }
     if (config.getPreviousItem().getItem().isSimilar(item)) {
       if (plugin.getBabies().getGuiClickSound() != null)
         Sounds.playSound(p, plugin.getBabies().getGuiClickSound());
       int currPage = PAGEMAP.get(p.getName());
       if (currPage == 0) open(p, config.getMaxPage());
       else open(p, currPage - 1);
       return;
     }
     if (config.getNextItem().getItem().isSimilar(item)) {
       if (plugin.getBabies().getGuiClickSound() != null)
         Sounds.playSound(p, plugin.getBabies().getGuiClickSound());
       int currPage = PAGEMAP.get(p.getName());
       if (currPage == config.getMaxPage()) open(p, 0);
       else open(p, currPage + 1);
       return;
     }
     BalloonStorage balloon = api.getBalloonByItemStack(item);
     if (!Methods.hasPermission(p, balloon.getPermission())) {
       plugin.informPlayerNoPermission(p, config.getNoPermissionMessage());
       return;
     }
     new BalloonImpl(p, balloon).give();
     Sounds.playSound(p, config.getGiveSound());
     p.closeInventory();
   }
 }