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

Помогите Как обработать открытие сундука?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Poyalnik, 16 май 2018.

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

    Poyalnik Новичок Пользователь

    Баллы:
    11
    Только не такой способ:
    @EventHandler
    public void openInventory(InventoryOpenEvent e) {

    if(e.getInventory().getType()==InventoryType.CHEST) {
    Потому что я создаю новый инвентарь заполняю его рандомными ресурсами и открываю его игроку, но
    Событие реагирует на это и получается зацикленная система.

    Можно не создавать новый инвентарь и добавлять предметы в инвентарь сундука, но мне нужно изменить title инвентаря, а как это сделать без создания нового инвентаря я не знаю.
     
  2. Mr Hosting
  3. alexandrage

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

    Баллы:
    173
    PlayerInteractEvent
     
  4. Rider3217

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

    Баллы:
    98
    Имя в Minecraft:
    Planet0111
    для своих инвентарей используй InventoryHolder, а не проверку имени инвентаря
     
  5. Автор темы
    Poyalnik

    Poyalnik Новичок Пользователь

    Баллы:
    11
    Да спасибо я уже разобрался.
     
  6. Автор темы
    Poyalnik

    Poyalnik Новичок Пользователь

    Баллы:
    11
    Если вы еще здесь, помогите пожалуйста. Можно ли искусственно запустить анимацию открытия крышки сундука?
     
  7. Exception_Prototype

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

    Баллы:
    76
    PHP:
    //Импорты привязываются к версии
        
    public void playChest(Location chestLocationboolean action) {
            
    WorldServer world = ((CraftWorld)chestLocation.getWorld()).getHandle();
            
    BlockPosition position = new BlockPosition(chestLocation.getX(), chestLocation.getY(), chestLocation.getZ());
            if (
    chestLocation.getBlock().getTypeId() == 54) {
                try {
                    
    TileEntityChest tileChest = (TileEntityChest)world.getTileEntity(position);
                    
    world.playBlockAction(positiontileChest.w(), 1action 0);
                } catch (
    Exception tileChest) {}
            } else if (
    chestLocation.getBlock().getTypeId() == 130) {
                try {
                    
    TileEntityEnderChest tileChest = (TileEntityEnderChest)world.getTileEntity(position);
                    
    world.playBlockAction(positiontileChest.w(), 1action 0);
                } catch (
    Exception tileChest) { }
            }
        }
     
  8. alexandrage

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

    Баллы:
    173
    Часто по голове бьют? Протоколлиб не не в курсе?
     
  9. Exception_Prototype

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

    Баллы:
    76
    Ваще не бьют, этот код когда-то где-то кидали, я его сохранил. Не все пользуются Протоколлибом.
     
  10. alexandrage

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

    Баллы:
    173
    Код:
            Player player = e.getPlayer();
            WrapperPlayServerBlockAction packet = new WrapperPlayServerBlockAction();
            packet.setBlockType(Material.CHEST);
            packet.setByte1(1);
            packet.setByte2(1);
            packet.setLocation(new BlockPosition(e.getClickedBlock().getLocation().toVector()));
            packet.sendPacket(player);
            player.playSound(e.getClickedBlock().getLocation(), Sound.BLOCK_CHEST_OPEN, 1, 1);
    packet.setByte2(0); закрыть.
     

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