Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Отловить название сундука, а точнее название инвентаря сундука

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

Статус темы:
Закрыта.
  1. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Всем привет. Очень глупый вопрос. Я отловил "событие", если игрок открыл сундук - будет писать ему в чат месседж, но когда я пытаюсь отловить еще и название сундука - уже ничего не работает. Пытался отловить его разными способами (даже извращенными), но все было тщетно. Может быть мне рубакит чем-то поможет?

    Код этого события:
    Код:
        @EventHandler
        public void test(PlayerInteractEvent e) {
           
            Player p = e.getPlayer();
           
            if(e.getAction().equals((Object)Action.RIGHT_CLICK_AIR) && e.getClickedBlock().getType().equals(Material.CHEST)) {
               
                p.sendMessage("тестюрка");
            }
        }
     
  2. Хостинг MineCraft
    <
  3. Dymeth

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

    Баллы:
    76
    Для этого подойдёт скорее InventoryOpenEvent. Объект инвентаря можно получить при помощи метода getInventory(), если память не изменяет.
     
  4. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    А как получить игрока в этом событии?[DOUBLEPOST=1469123554,1469123508][/DOUBLEPOST]Попробовал так:

    for(Player p : Bukkit.getOnlinePlayers())
     
  5. Dymeth

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

    Баллы:
    76
    Стоит пробовать пользоваться документацией.
    Метод getPlayer() (это ещё и логично). Правда он HumanEntity возвращает, поэтому можешь кастовать в баккитовского Player, если нужно.
     
  6. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Последнее редактирование: 21 июл 2016
  7. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Так разве он не будет спвнить еще один сундук?[DOUBLEPOST=1469169798][/DOUBLEPOST]Немного не понимаю, а как эту строчку использовать?

    Код:
        @EventHandler
        public void test(InventoryOpenEvent e) {
           
            for(Player p : Bukkit.getOnlinePlayers()) {
               
                ((CraftChest) Bukkit.getWorld("Realistic_World").getBlockAt(((Player) p).getLocation()).getState()).getTileEntity().
                a(ChatColor.DARK_GREEN + ChatColor.BOLD.toString() + "Ящик");
            }
        }
     
  8. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    try
    Код:
      @EventHandler
      public void ttest(PlayerInteractEvent event) {
          Player p = event.getPlayer();
         
          Block b = (Block) event.getClickedBlock();
         
         
         
          if (event.getAction() == Action.RIGHT_CLICK_BLOCK && b.getType() == Material.CHEST) {
              Chest chest = (Chest) b.getState();
             
              if (chest.getInventory().getName().equalsIgnoreCase("etot sunduk - pidoras")) {
                  p.setBanned(true);
              }
          }
      }
     
  9. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Найс пасхалочка :)
     
  10. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    всмысле? :eek:
    p.s:
    немного скорее всего накосячил, юзай не getInventory(), а:
    Код:
              if (chest.getBlockInventory().getName().equalsIgnoreCase("etot sunduk - pidoras")) {
    
    getBlockInventory
    И да, не юзай
    if (event.getAction().equals() ....);
    хз мб работает, но лучше
    if (event.getAction() == Action....) {
    // do etc
     
    Последнее редактирование: 22 июл 2016
  11. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
     
  12. xDark

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

    Баллы:
    96
    Skype:
    ailyashevich
    Имя в Minecraft:
    xDark
    Работает ли? т.к. не тестил
     
  13. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Да, вполне. Спасибо, тема закрыта!
     
Статус темы:
Закрыта.

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