Не работает getScheduler
Просьба пожалуйста помогите решить проблему. Не срабатывает шедулер почему-то, сколько возился с этой проблей все никак не получилось починить. У меня есть отдельная команда, которая отвечает за запуск скрипта, скрипт отвечает за то чтобы по местоположению игрока поставить блок. Вызываю команду, а команда в шедулере и вовсе не срабатывает спустя хоть 20 секунд. Не понимаю в чем причина, начал только изучать эту всю тематику разработки плагинов)))
Код:
package me.bodka.meteorfalling.commands;
import me.bodka.meteorfalling.Main;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class AdminCMD extends JavaPlugin implements CommandExecutor {
public AdminCMD(Main plugin){
plugin.getCommand("StartMeteorFalling").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if (!(sender instanceof Player)){
System.out.println("Только игрок может исполнять эту команду!");
return true;
}
Player player = (Player) sender;
if(player.isOp()){
int x = player.getLocation().getBlockX(), y = player.getLocation().getBlockY(), z = player.getLocation().getBlockZ();
Location loc = new Location(player.getWorld(), x, y, z);
Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(this, new Runnable() {
@Override
public void run() {
loc.getBlock().setType(Material.DIAMOND_BLOCK);
}
}, 20L);
System.out.println("Шедулер пройден!");
}
else{
System.out.println("Только админ может использовать эту команду!");
return true;
}
return false;
}
}
Ответы (1 шт):
Скорее всего проблема в том, что Вы пытаетесь изменить мир в асинхроне. Используйте метод runTaskLater для своей задачи.
Если же проблема не решилась - предоставьте логи, чтобы было проще разобраться с вашей проблемой.