- Баллы
- 96
Есть задача
BlockBreakEvent -> event#getBlock() -> block.setType(Material.BEDROCK) -> after N seconds block.setType(material)
Если сломался условный блок, то превратить его в бедрок и после N секунд восстановить в первоначальный тип.
Handler: https://pastebin.com/hPLtXMhb
RestoreManager -> https://pastebin.com/hefH8qWF
RestoreManager тикает каждые 20 тиков.
Проблема в том, что если я добавляю задачу на возобновление блока в методе, куда пришёл эвент, то блок никогда не превратится в бедрок.
Ибо сразу после эвента он становится воздухом. Понятное дело, что нужно выполнить setType(bedrock) спустя тик(после эвента).
Смысл RestoreManager в том, что восстанавливать все блоки в одном потоке,а не делать для каждого runTaskLater.
Но если решать проблему с бедроком, то получается половина задачи всё равно будет решаться runTask, что как по мне не очень.
Может подскажите решение получше ?
BlockBreakEvent -> event#getBlock() -> block.setType(Material.BEDROCK) -> after N seconds block.setType(material)
Если сломался условный блок, то превратить его в бедрок и после N секунд восстановить в первоначальный тип.
Handler: https://pastebin.com/hPLtXMhb
RestoreManager -> https://pastebin.com/hefH8qWF
RestoreManager тикает каждые 20 тиков.
Проблема в том, что если я добавляю задачу на возобновление блока в методе, куда пришёл эвент, то блок никогда не превратится в бедрок.
Ибо сразу после эвента он становится воздухом. Понятное дело, что нужно выполнить setType(bedrock) спустя тик(после эвента).
Смысл RestoreManager в том, что восстанавливать все блоки в одном потоке,а не делать для каждого runTaskLater.
Но если решать проблему с бедроком, то получается половина задачи всё равно будет решаться runTask, что как по мне не очень.
Может подскажите решение получше ?