Помогите Задержка между кодами

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

Folzy

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
CUBOPHORIA
Решил создать плагин, я в этом деле новичок.
Так вот я хочу реализовать вот что:
Когда ломаешь угольную руду, за место нее ставится Бедрок, и через некоторое время ставится снова угольная руда.
Так вот как мне настроить задержку между этими кодами:1 файл.JPG
 
Код:
        Bukkit.getScheduler().runTaskLater(plugin, () -> {
            //CODE
        },20);
Где 20 - кол-во мс которое таймер будет ждать перед тем, как выполнить //CODE
 
Код:
        Bukkit.getScheduler().runTaskLater(plugin, () -> {
            //CODE
        },20);
Где 20 - кол-во мс которое таймер будет ждать перед тем, как выполнить //CODE
Спасибо а вопрос я правильно написал код с тем что при ломании Угольной руды,спавнится бедрок?
 
plugin инициализируй.

В классе Main добавь: "public static Main inst;"
В классе Main в onEnable добавь: "inst = this;"
И потом в классе Block в таймере вместо plugin используй "Main.inst"
 
plugin инициализируй.

В классе Main добавь: "public static Main inst;"
В классе Main в onEnable добавь: "inst = this;"
И потом в классе Block в таймере вместо plugin используй "Main.inst"
Прости что глупые вопросы задаю просто плохо понимаю)
Вот так?

Ошибка 2.JPG

Если да то куда вставлять - inst = this; ?
в onEnable куда?
Вставлять между фигурными скобками?
 

Вложения

  • upload_2021-2-6_19-21-14.png
    upload_2021-2-6_19-21-14.png
    17,5 КБ · Просмотры: 4
plugin инициализируй.

В классе Main добавь: "public static Main inst;"
В классе Main в onEnable добавь: "inst = this;"
И потом в классе Block в таймере вместо plugin используй "Main.inst"
А все все я понял спасибо тебе
 
Рано ты начал плагины пилить, для начала советую ознакомится с джавой, её структурой и ООП.

Много кто так начинает, хай продолжает писать, мб научится уму и что нибудь хорошее напишет
 
plugin инициализируй.

В классе Main добавь: "public static Main inst;"
В классе Main в onEnable добавь: "inst = this;"
И потом в классе Block в таймере вместо plugin используй "Main.inst"
Можешь еще помочь?
Смотри у меня идея такова что при ломании угольной руды, за место нее ставился Бедрок.
Но у меня почему то этот код не срабатывает.
Не могу понять в чем дело
Не понял.JPG
 
Рано ты начал плагины пилить, для начала советую ознакомится с джавой, её структурой и ООП.
Ну дело в том что, для меня теоретический материал всегда не понятен мне нужна практика чтоб понять, что я сейчас и делаю.
 
20 тиков = 1 секунда. И так, как ты в главном классе это делаешь - вместо inst можешь использовать this.
PHP:
@EventHandler
public void onBreak(BlockBreakEvent e) {
    Block b = e.getBlock();
    if (b.getType() == Material.COAL_ORE) {
        b.setType(Material.BEDROCK);
        Bukkit.getScheduler().runTaskLater(plugin, () -> b.setType(Material.COAL_ORE), 20L);
    }
}
 
plugin инициализируй.

В классе Main добавь: "public static Main inst;"
В классе Main в onEnable добавь: "inst = this;"
И потом в классе Block в таймере вместо plugin используй "Main.inst"
Какому г*вну ты его учишь. Банально di - и все готово.
 
Можешь еще помочь?
Смотри у меня идея такова что при ломании угольной руды, за место нее ставился Бедрок.
Но у меня почему то этот код не срабатывает.
Не могу понять в чем дело
Посмотреть вложение 58749
Рискну предположить что это потому, что ты не зарегистрировал слушатель событий
 
20 тиков = 1 секунда. И так, как ты в главном классе это делаешь - вместо inst можешь использовать this.
PHP:
@EventHandler
public void onBreak(BlockBreakEvent e) {
    Block b = e.getBlock();
    if (b.getType() == Material.COAL_ORE) {
        b.setType(Material.BEDROCK);
        Bukkit.getScheduler().runTaskLater(plugin, () -> b.setType(Material.COAL_ORE), 20L);
    }
}
Слушай ты меня избавил от "геморроя" весь интернет облазил.
Фух спасибо
Да и к тому же я уже нашел человека который мне написал плагин)
 
private Main plugin;
public Listener(Main plugin) {
this.plugin = plugin;
}


Думаю так будет получше
 
Так проще проектировать грамотную структуру приложения, меньше шанс наделать ошибок. Да даже банально тесты при использовании статики не написать.

Конкретно в бакките статические объекты зачастую приводят к утечкам памяти при использовании PlugMan'а или /reload (что бы кто не говорил, что это вредно - это всё равно используют).

Ну и в целом не очень хорошая привычка создавать статические объекты (фактически синглтоны). Эта практика программирования противоречит принципам ООП.
Создавать статические утилиты - идея ещё сносная (ради утилит, например), но вот статические объекты - только в крайнем случае
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх