Вопрос [1.19.2] PlayerTeleportEvent may only be triggered synchronously

neverlessy

Пользователь
Сообщения
22
Код:
[15:38:16 WARN]: Exception in thread "Timer-0" java.lang.IllegalStateException: PlayerTeleportEvent may only be triggered synchronously.
[15:38:16 WARN]:        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:666)
[15:38:16 WARN]:        at org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer.teleport(CraftPlayer.java:1321)
[15:38:16 WARN]:        at org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer.teleport(CraftPlayer.java:1228)
[15:38:16 WARN]:        at org.bukkit.entity.Entity.teleport(Entity.java:157)
[15:38:16 WARN]:        at org.bukkit.craftbukkit.v1_19_R1.entity.CraftPlayer.teleport(CraftPlayer.java:1223)
[15:38:16 WARN]:        at org.bukkit.craftbukkit.v1_19_R1.entity.CraftEntity.teleport(CraftEntity.java:545)
[15:38:16 WARN]:        at MoonPrison-0.1.jar//io.github.neverlessy.moonprison.commands.menus.MenuMinesList$1.run(MenuMinesList.java:72)
[15:38:16 WARN]:        at java.base/java.util.TimerThread.mainLoop(Timer.java:566)
[15:38:16 WARN]:        at java.base/java.util.TimerThread.run(Timer.java:516)

Сам метод:


Java:
    protected static void teleportPlayerToMine(int mine, Player player) {
        player.sendMessage("§6Вы будете телепортированы через §c5 §6 секунд");
        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                player.teleport(DeluxeMinesAPI.getMine(String.valueOf(mine)).getMineData().getMineSpawn());
                player.sendMessage("§6Вы успешно телепортированы на шахту §c" + DeluxeMinesAPI.getMine(String.valueOf(mine)).getName());
            }
        }, 5000);
    }

в метод передается первым параметром самое обычное число, вторым
Код:
Player p = (Player) e.getWhoClicked();
, получаемое в событии InventoryClickEvent.

Что не так и что означает ошибка?

(Ядро Purpur)
Объединено

Проблема решена. Использовал таски от Баккита

Java:
    protected static void teleportPlayerToMine(int mine, Player player) {
        player.sendMessage("§6Вы будете телепортированы через §c5 §6секунд");
        new BukkitRunnable() {
            @Override
            public void run() {
                player.teleport(DeluxeMinesAPI.getMine(String.valueOf(mine)).getMineData().getMineSpawn());
                player.sendMessage("§6Вы успешно телепортированы на шахту §c" + DeluxeMinesAPI.getMine(String.valueOf(mine)).getName());
            }
        }.runTaskLater(MoonPrison.plugin, 100);
    }
 
Последнее редактирование:
Назад
Сверху Снизу