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

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

_MasterCapeXD_

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

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

Код:

PHP:
            Block m5y = block.getLocation().clone().add(0, -5, 0).getBlock();
            if (m5y.getType() != Material.CHEST)
                return;
            Chest chest = (Chest) m5y.getState();
            player.playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN, 1F, 1F);
            player.openInventory(chest.getBlockInventory());
 
Не сработало..
PHP:
Block m5y = block.getLocation().clone().add(0, -5, 0).getBlock();
if (m5y.getType() != Material.CHEST)
return;
if (!m5y.getChunk().isLoaded())
m5y.getChunk().load();
Chest chest = (Chest) m5y.getState();
player.playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN, 1F, 1F);
player.openInventory(chest.getBlockInventory());
 
Не сработало..
PHP:
Block m5y = block.getLocation().clone().add(0, -5, 0).getBlock();
if (m5y.getType() != Material.CHEST)
return;
if (!m5y.getChunk().isLoaded())
m5y.getChunk().load();
Chest chest = (Chest) m5y.getState();
player.playSound(player.getLocation(), Sound.BLOCK_CHEST_OPEN, 1F, 1F);
player.openInventory(chest.getBlockInventory());
Так а сундук откуда появляется? Его кто то ставит, заполняет вещи? Или его спавнит другой плагин?
 
Если сундук с лут тейблом (сгенерирован миром) - вещи генерится когда игрок его открывает, до этого он пустой.
Там в 1.13 завезли LootTable API, если что.
 
А выполнять через тик пробовал?
Не пробовал. Стоит ли?

Так а сундук откуда появляется? Его кто то ставит, заполняет вещи? Или его спавнит другой плагин?
Да, RandomChest заполняет сундук.

Если сундук с лут тейблом (сгенерирован миром) - вещи генерится когда игрок его открывает, до этого он пустой.
Там в 1.13 завезли LootTable API, если что.
Возможно, но я не думаю, что RandomChest работает также.

Подгрузи и релоадни.
Звучит очень костыльно и странно. Я могу попробовать, но очень сомневаюсь в работоспособности этой манипуляции.
 
Последнее редактирование:
Уверен что он сундук не при первом открытии генерирует? Тогда это может быть багом ядра.
Почитал код RandomChest. Генерит в PlayerInteractEvent. Всё понятно..

Спасибо всем, кто помогал.
Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх