Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов 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. Хостинг MineCraft
    <
  3. serega6531

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

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

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

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

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

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Если не ошибаюсь то так
    public void ClickListener(InventoryClickEvent cevent){
    Player por = (Player)cevent.getWhoClicked();
    por.closeInventory();
    }[DOUBLEPOST=1405062379,1405061228][/DOUBLEPOST]
    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();
    }
    }
    }
    Что я опять пропустил.....
     
  6. 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); //чтоб не брали итемы
    //дальше твой код 
            }
        }
     
  7. Автор темы
    SaMEC

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

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Почему то все равно забираются...
     
  8. 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);
    //дальше твой код
            }
        }
     
  9. makssof

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

    Баллы:
    103
    Skype:
    makssofez
    Ты случаем не забыл изменить "InvName" на "СвоёИмяИнвентаря"?[DOUBLEPOST=1405091401,1405091361][/DOUBLEPOST]
    Строки так не проверяют.[DOUBLEPOST=1405091676][/DOUBLEPOST]+ зачем вот это?
    Код:
    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);
     
  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
    Skype:
    makssofez
    1. inv.setItem(8, new ItemStack(Material.AIR);
    Этого не надо делать. Там по умолчанию будет воздух. (= нечего)
     
  14. Red_ZvER

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

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    значит я слепой хД[DOUBLEPOST=1405107573,1405107320][/DOUBLEPOST]
    Код:
    @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. Red_ZvER

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

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

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

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

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

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

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

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

    Вложения:

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

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

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    ты не зарегистрировал эвент.[DOUBLEPOST=1405112259,1405112101][/DOUBLEPOST]
    Код:
    @Override
       public void onEnable() {
         saveDefaultConfig();
         saveConfig();
         saveDefaultConfig();
         getConfig();
         getLogger().info("ѕлагин включен!");
         getCommand("mw").setExecutor(this);
       }
    
    добавь
    Код:
    Bukkit.getPluginManager().registerEvents(this, this);
    Код:
     public class Menu extends JavaPlugin
    Код:
     public class Menu extends JavaPlugin implements Listener
     
  20. Автор темы
    SaMEC

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

    Баллы:
    173
    Skype:
    support.meedway
    Имя в Minecraft:
    Nick
    Огоонь работает как часы, спасибо большое!
     
  21. Red_ZvER

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

    Баллы:
    66
    Skype:
    darrion.red
    Имя в Minecraft:
    RedZvER
    Всегда пожалуйста :3
     

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