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

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

Lisenochek

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

Код этого события:
JavaScript:
    @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("тестюрка");
        }
    }
 
Для этого подойдёт скорее InventoryOpenEvent. Объект инвентаря можно получить при помощи метода getInventory(), если память не изменяет.
 
Для этого подойдёт скорее InventoryOpenEvent. Объект инвентаря можно получить при помощи метода getInventory(), если память не изменяет.
А как получить игрока в этом событии?
Попробовал так:

for(Player p : Bukkit.getOnlinePlayers())
 
А как получить игрока в этом событии?
Попробовал так: <код>
Стоит пробовать пользоваться документацией.
Метод getPlayer() (это ещё и логично). Правда он HumanEntity возвращает, поэтому можешь кастовать в баккитовского Player, если нужно.
 
проверь если block#getType() и отлови название meta
Chest chest =(Chest) b.getState()
и теперь чекай на наличие имени
https://www.spigotmc.org/threads/setting-a-customname-for-a-chest.102821/
Так разве он не будет спвнить еще один сундук?
Немного не понимаю, а как эту строчку использовать?

JavaScript:
    @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() + "Ящик");
        }
    }
 
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);
          }
      }
  }
 
Найс пасхалочка :)
всмысле? :eek:
p.s:
немного скорее всего накосячил, юзай не getInventory(), а:
Код:
          if (chest.getBlockInventory().getName().equalsIgnoreCase("etot sunduk - pidoras")) {
getBlockInventory
И да, не юзай
if (event.getAction().equals() ....);
хз мб работает, но лучше
if (event.getAction() == Action....) {
// do etc
 
Последнее редактирование:
Работает ли? т.к. не тестил
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх