Помогите как определить в каком инвентаре нажал игрок?

Статус
Закрыто для дальнейших ответов.

Bezobrazie

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
MySoulIsCry
У меня на данный момент есть плагин с GUI, в гуи можно нажимать на предметы и они будут покупается. Но вот проблема в том что когда игрок нажимает в своем инвентаре то InventoryClickEvent тоже срабатывает и так сказать продает предмет в слоте с этим номером.
upload_2021-6-6_21-15-57.png
 
К тому, что сказано выше:

Код:
if (event.getClickedInventory().getName().equals("§8Магазин предметов")) {
// выполняешь действие
}
 
К тому, что сказано выше:

Код:
if (event.getClickedInventory().getName().equals("§8Магазин предметов")) {
// выполняешь действие
}
у меня так и прописано. этот баг только в самом магазине и нигде больше
 
Я возможно неправильно понял, у левого плагина есть баг и ты пытаешься его исправить своим плагином?
 
ну кинь код хотя-бы тогда
Код:
/*    */ public class click implements Listener {
/*    */   private Main plugin;
/* 11 */   private Main main = (Main)Main.getPlugin(Main.class);
/*    */   
/*    */   public click(Main main) {
/* 14 */     this.plugin = main;
/*    */   }
/*    */   @EventHandler
/*    */   public void handler(InventoryClickEvent e) {
/* 18 */     Player p = (Player)e.getWhoClicked();
/* 19 */     if (e.getInventory().getTitle().equalsIgnoreCase("Магазин предметов")) {
/*    */       
/* 21 */       e.setCancelled(true);
/* 22 */       if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR)) {
/*    */         return;
/*    */       }
/* 25 */       if (e.getSlot() == 45 && e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.RED + "Закрыть")) {
/* 26 */         p.closeInventory();
/*    */       }
/* 28 */       if (e.getSlot() == 53 && e.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.RED + "Закрыть")) {
/* 29 */         p.closeInventory();
/*    */       }
/*    */     } 
/*    */   }
/*    */   
/*    */   @EventHandler
/*    */   public void buy(InventoryClickEvent e) {
/* 36 */     Player p = (Player)e.getWhoClicked();
/* 37 */     if (e.getInventory().getTitle().equalsIgnoreCase("Магазин предметов"))
/* 38 */       for (int r = 0; r < 45; r++) {
/* 39 */         if (e.getSlot() == r) {
/* 40 */           boolean Item1on = this.plugin.getConfig().getBoolean("Item" + r + ".enable");
/* 41 */           if (Item1on) {
/* 42 */             ItemStack item1 = (ItemStack)this.main.getConfig().get("Item" + r + ".Material");
/* 43 */             if (item1.getType() != Material.AIR) {
/* 44 */               int prise = this.plugin.getConfig().getInt("Item" + r + ".prise");
/*    */ 
/*    */               
/* 47 */               if (!Economye.takemoney(p, prise)) {
/*    */                 
/* 49 */                 p.sendMessage("§сУ вас не достаточно денег на балансе!");
/*    */                 return;
/*    */               } 
/* 52 */               p.sendMessage("§7Вы успешно купили " + ChatColor.LIGHT_PURPLE + "предмет" + " §7за " + ChatColor.LIGHT_PURPLE + prise + ChatColor.LIGHT_PURPLE + "$");
/* 53 */               PlayerInventory inv = p.getInventory();
/* 54 */               inv.addItem(new ItemStack[] { item1 });
/*    */             } 
/*    */           } 
/*    */         } 
/*    */       } 
/*    */   }
/*    */ }
 
e.getInventory() измени на e.getClickedInventory()
 
e.getInventory() измени на e.getClickedInventory()
я нашел другое решение) e.getRawSlot(); но все равно спасибо. Если не сложно не мог бы подсказать почему так происходит?(скрины ниже)
upload_2021-6-6_23-58-6.png
upload_2021-6-6_23-58-15.png
Код:
                           Lore.add("");
/* 39 */             Lore.add("§7---------------------");
/* 40 */             Lore.add("");
/* 41 */             Lore.add(main.getConfig().getString("Shop.messages.prise").replace("%prise%", prise));
/* 42 */             Lore.add("");
/* 43 */             Lore.add("§7---------------------");
/* 44 */             meta.setLore(Lore);
 
я нашел другое решение) e.getRawSlot(); но все равно спасибо. Если не сложно не мог бы подсказать почему так происходит?(скрины ниже)
Посмотреть вложение 59595
Посмотреть вложение 59596
Код:
                           Lore.add("");
/* 39 */             Lore.add("§7---------------------");
/* 40 */             Lore.add("");
/* 41 */             Lore.add(main.getConfig().getString("Shop.messages.prise").replace("%prise%", prise));
/* 42 */             Lore.add("");
/* 43 */             Lore.add("§7---------------------");
/* 44 */             meta.setLore(Lore);
Кодировка UTF-8? (в конфиге)
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх