- Баллы
- 96
Вообще. где метод setBlock? Как его правильно юзать?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Мне кажется мы не много ушли с темы)Отменяем евент.
getBlock().getLoc.getWorld.dropItemNaturally (getBlock.getItemStack, getBlock.getLoc);
block.setType ();
task;
Вот так нечего нужного не нашёл.Нет бы лишний раз погуглить где какие методы, мы будем разводить тему до состояния грязи. Фу быть таким.

Ну то что я написал это и делает.Мне кажется мы не много ушли с темы)
Дело в том, что мне нужно следующие:
Когда я ломаю блок, который есть в проверке, он как обычно должен сломаться (дропнуться), далее на его месте должен появится обсидиант, а потом (спустя 3 секунды) - светокамень.
Сделал так и получил то, что мне нужно было.Ну то что я написал это и делает.
Тебе же написали что когда вызывается евент, то блок еще не сломан. А когда ты меняешь блок в этом евенте, то выпадет блок тот, на который ты его заменил.
Решение такое:
Отменить евент.
Дропнуть нужный блок вручную.
Заменить блок на земле.
Запустить шедулер.
@EventHandler
public void BlockBreakEvent(BlockBreakEvent event) {
for (Block _block : api.ListCheckingBlocks) {
if (_block.equals(event.getBlock())) {
Bukkit.getScheduler().runTaskLater(this, () -> {
event.getBlock().setType(Material.OBSIDIAN);
}, 10L);
Bukkit.getScheduler().runTaskLater(this, () -> {
event.getBlock().setType(Material.REDSTONE_ORE);
}, 60L);
return;
}
}
event.setCancelled(false);
}
event.getBlock().setType(Material.REDSTONE_ORE);
//на
event.getBlock().setType(_block.getType());
Что значит запустить на следующий тик и на сколько подобный способ глупый?Это костыль.
Если уж так делаешь, то запускай шедулер на следующий тик.
Вау, сразу ставится) Этот момент решили.Bukkit.getScheduler().runTask(this, ()-> event.getBlock().getLocation.getBlock().setType(Material.OBSIDIAN));
Выполнит задачу на следующий тик.
20 тиков == 1 секунда.