Войти или зарегистрироваться

Помогите Не работает телепорт

  • Автор темы Автор темы BeYkeR
  • Дата начала Дата начала
Есть объект location. В нем хранится ссылка на объект world. Объект world хранится где-то в ядре. С каждым тиком у объекта world вызывается метод .clone(), который создает новый объект world в ядре сервера и сервер далее уже взаимодействует с этим объектом ровно 1 тик. Когда проходит тик, все location продолжают ссылаться на устаревший world, в то время как сервер использует уже новый объект world. Когда вы пытаетесь телепортировать игрока по устаревшему location и попадаете на ссылку с устаревшим миром, соответственно вас никуда не телепортирует.
Когда вы создаете новый location констуктором:.

Т.е. если создать объект Location в одном тике, то во втором его уже использовать уже нельзя? У Вас откуда эта информация? Вы это проверяли?
Я столько раз заполнял массив состоящий из Location при старте плагина и использовал его на протяжении нескольких суток, что... и не знаю как относиться к выше изложенному.


Ну и по теме:
Мне кажется, я всё же угадал:

Код:
@EventHandler
public void onPlayerTeleport(PlayerTeleportEvent event) {
    Player player = event.getPlayer();
    if(HGAPI.getPlayerManager().getPlayers().containsKey(player.getName())){
        HockeyPlayer hp = HGAPI.getPlayerManager().getHockeyPlayer(player.getName());
        if(hp.getArena().isRunning()){
                event.setCancelled(true);
        }
    }
}
 
Т.е. если создать объект Location в одном тике, то во втором его уже использовать уже нельзя? У Вас откуда эта информация? Вы это проверяли?
Я столько раз заполнял массив состоящий из Location при старте плагина и использовал его на протяжении нескольких суток, что... и не знаю как относиться к выше изложенному.


Ну и по теме:
Мне кажется, я всё же угадал:

Код:
@EventHandler
public void onPlayerTeleport(PlayerTeleportEvent event) {
    Player player = event.getPlayer();
    if(HGAPI.getPlayerManager().getPlayers().containsKey(player.getName())){
        HockeyPlayer hp = HGAPI.getPlayerManager().getHockeyPlayer(player.getName());
        if(hp.getArena().isRunning()){
                event.setCancelled(true);
        }
    }
}
Да, вы угадали, спасибо вам :)
 
Назад
Верх