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

Помогите Chest.class | Пустой инвентарь

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    У меня была задача сделать открытие сундука на других координатах, кликнув на определенный блок.
    С этой задачей я справился, все заработало и вещи показывает. Потом ко мне обращаются с проблемой:

    • Если никто не открывал сундук,то содержимое не видно
    • По блоку кликаешь сундук пустой
    • Открываешь сундук там вещи
    • И только после этого по клику блока только видно вещи сундук.
    У меня при тесте такого не было, да и сталкиваюсь с подобным впервые. Есть возможность это исправить?

    Код:

    PHP:
                Block m5y block.getLocation().clone().add(0, -50).getBlock();
                if (
    m5y.getType() != Material.CHEST)
                    return;
                
    Chest chest = (Chestm5y.getState();
                
    player.playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN1F1F);
                
    player.openInventory(chest.getBlockInventory());
     
  2. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    76
    чанк подгрузи
     
  3. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Спасибо, сейчас проверю.
     
  4. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Не сработало..
    PHP:
    Block m5y block.getLocation().clone().add(0, -50).getBlock();
    if (
    m5y.getType() != Material.CHEST)
    return;
    if (!
    m5y.getChunk().isLoaded())
    m5y.getChunk().load();
    Chest chest = (Chestm5y.getState();
    player.playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN1F1F);
    player.openInventory(chest.getBlockInventory());
     
  5. Sitmobedaf

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

    Баллы:
    103
    Имя в Minecraft:
    SiT
    А выполнять через тик пробовал?
     
  6. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Так а сундук откуда появляется? Его кто то ставит, заполняет вещи? Или его спавнит другой плагин?
     
  7. Nikolai_Faint

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

    Баллы:
    96
    Подгрузи и релоадни.
     
  8. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Если сундук с лут тейблом (сгенерирован миром) - вещи генерится когда игрок его открывает, до этого он пустой.
    Там в 1.13 завезли LootTable API, если что.
     
  9. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Не пробовал. Стоит ли?

    Да, RandomChest заполняет сундук.

    Возможно, но я не думаю, что RandomChest работает также.

    Звучит очень костыльно и странно. Я могу попробовать, но очень сомневаюсь в работоспособности этой манипуляции.
     
    Последнее редактирование: 18 авг 2018
  10. alexandrage

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

    Баллы:
    173
    chest.getSnapshotInventory(); должно помочь.
     
  11. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    player.openInventory(chest.getSnapshotInventory()); - вообще не открывает инвентарь
     
  12. Nikolai_Faint

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

    Баллы:
    96
    refresh chunk
     
  13. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Уверен что он сундук не при первом открытии генерирует? Тогда это может быть багом ядра.
     
  14. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Почитал код RandomChest. Генерит в PlayerInteractEvent. Всё понятно..

    Спасибо всем, кто помогал.
    Тема закрыта.
     
Статус темы:
Закрыта.

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