1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Разбор полетов в Gui....

Тема в разделе "Разработка плагинов для новичков", создана пользователем SaMEC, 11 июл 2014.

  1. Автор темы
    SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Создал инвентарь через команду, кто может пояснить как запретить, вытаскивать от туда предметы.

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
    {
    if (cmd.getName().equalsIgnoreCase("menu")) {
    Inventory inv = Bukkit.createInventory(null, 9, "Испытание Gui");
    inv.setItem(0, new ItemStack(Material.TNT);
    inv.setItem(1, new ItemStack(Material.AIR);
    inv.setItem(2, new ItemStack(Material.AIR);
    inv.setItem(3, new ItemStack(Material.AIR);
    inv.setItem(4, new ItemStack(Material.AIR));
    inv.setItem(5, new ItemStack(Material.AIR));
    inv.setItem(6, new ItemStack(Material.AIR));
    inv.setItem(7, new ItemStack(Material.AIR));
    inv.setItem(8, new ItemStack(Material.AIR);
    ((HumanEntity)sender).openInventory(inv);
    }
    return true;
    }
     
  2. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    InventoryClickEvent
     
  3. AxmeD

    AxmeD Старожил Пользователь

    Баллы:
    103
    Берешь InventoryClickEvent, проверяешь, твой ли это инвентарь. Если да, то отменяй ивент, чтобы предмет не поднимался и дальше свои функции.
     
  4. Автор темы
    SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Если не ошибаюсь то так
    public void ClickListener(InventoryClickEvent cevent){
    Player por = (Player)cevent.getWhoClicked();
    por.closeInventory();
    }
    public void ClickListener(InventoryClickEvent cevent){
    Player por = (Player)cevent.getWhoClicked();
    if(cevent.getInventory().getName() == "Испытание Gui")
    if (cevent.getSlot() == 0){
    Player pl = (Player)cevent.getWhoClicked();
    pl.closeInventory();
    }
    }
    }
    Что я опять пропустил.....
     
  5. Red_ZvER

    Red_ZvER Активный участник Пользователь

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    Код:
    @EventHandler
    public void onInvClick(InventoryClickEvent event) {
        String invName = event.getInventory().getName();
        Player pl = (Player) event.getWhoClicked();
        if(invName.equalsIgnoreCase("InvName")) {
            event.setCancelled(true); //чтоб не брали итемы
    //дальше твой код 
            }
        }
     
  6. Автор темы
    SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Почему то все равно забираются...
     
  7. Red_ZvER

    Red_ZvER Активный участник Пользователь

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    тогда попробуй вот это
    Код:
    @EventHandler
    public void onInvClick(InventoryClickEvent event) {
        String invName = event.getInventory().getName();
        Inventory inv = event.getInventory();
        Player pl = (Player) event.getWhoClicked();
        if(invName.equalsIgnoreCase("InvName")) {
            event.setCancelled(true); //чтоб не брали итемы
        pl.closeInventory();
        pl.openInventory(inv);
    //дальше твой код
            }
        }
     
  8. makssof

    makssof Старожил Девелопер Пользователь

    Баллы:
    103
    Ты случаем не забыл изменить "InvName" на "СвоёИмяИнвентаря"?
    Строки так не проверяют.
    + зачем вот это?
    Код:
    inv.setItem(1, new ItemStack(Material.AIR);
    inv.setItem(2, new ItemStack(Material.AIR);
    inv.setItem(3, new ItemStack(Material.AIR);
    inv.setItem(4, new ItemStack(Material.AIR));
    inv.setItem(5, new ItemStack(Material.AIR));
    inv.setItem(6, new ItemStack(Material.AIR));
    inv.setItem(7, new ItemStack(Material.AIR));
    inv.setItem(8, new ItemStack(Material.AIR);
     
  9. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
  10. Автор темы
    SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Это будет основа для вставки разных вещей + изменение названия и комментария.
    Тут поправочка у меня вот так уже.
    1. inv.setItem(0, new ItemStack(Material.GOLD);
    На свое имя я меняю, видимо я все таки что-то, где-то пропустил.
     
  11. Red_ZvER

    Red_ZvER Активный участник Пользователь

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    Эвент зарегистрировал?
     
  12. serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Да, он писал.
     
  13. makssof

    makssof Старожил Девелопер Пользователь

    Баллы:
    103
    1. inv.setItem(8, new ItemStack(Material.AIR);
    Этого не надо делать. Там по умолчанию будет воздух. (= нечего)
     
  14. Red_ZvER

    Red_ZvER Активный участник Пользователь

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    значит я слепой хД
    Код:
    @EventHandler
    public void onInvClick(InventoryClickEvent event) {
        String invName = event.getInventory().getName();
        Inventory inv = event.getInventory();
        Player pl = (Player) event.getWhoClicked();
        if(invName.equalsIgnoreCase("InvName")) {
            event.setCancelled(true); //чтоб не брали итемы
        pl.closeInventory();
        pl.openInventory(inv);
    //дальше твой код
            }
        }
    даже после этого они забирают?
     
  15. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    А зачем там:
    pl.closeInventory();
    pl.openInventory(inv);

    Открыли-закрыли? Для чего это?
     
  16. Red_ZvER

    Red_ZvER Активный участник Пользователь

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    закрыли-открыли, а это сбрасывает руку(если конечно эвент был отменен)
     
  17. fromgate

    fromgate Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    fromgate
    А! Ясно. Я просто по клику - сразу инвентарь закрываю, мне дальше его держать открытым не нужно.
     
  18. Автор темы
    SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    мне и надо чтобы он был пустым а первый слот был чем то заложен
     
  19. Red_ZvER

    Red_ZvER Активный участник Пользователь

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    так можно и не писать
    он сразу воздухом является.
     
  20. Автор темы
    SaMEC

    SaMEC Старожил Пользователь

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    В скором времени все слоты мне понадобятся, а так легче копаться в коде.
    Вот короче.... мозги ломать не кому не буду, жду ваших поспешных криков в мой адрес ))
    (Потому как я что-то делаю не так.)
     

    Вложения:

    • Menu.txt
      Размер файла:
      2,7 КБ
      Просмотров:
      6

Поделиться этой страницей