Проблемы с приведением класса к игроку

#java #minecraft #bungeecord

#java #Minecraft #bungeecord

Вопрос:

Я работал над плагином bungeecord, когда столкнулся с проблемой. Я работал с этим API, когда столкнулся с проблемой. Чтобы получить объект PlayerParty, мне нужно использовать этот метод

 PartyManager.getInstance().getParty()
 

Но он принимает OnlinePAFPlayer, поэтому я попробовал это:

 OnlinePAFPlayer player = (OnlinePAFPlayer) sender;
PartyManager.getInstance().getParty(player)
 

Но это не сработало, и я получил это исключение:

java.lang.ClassCastException: net.md_5.bungee.Пользовательское соединение не может быть приведено к de.simonsator.partyandfriends.api.pafplayers.OnlinePAFPlayer

Есть идеи, как это исправить?

Комментарии:

1. Ну, повторяя то, что говорится в сообщении об ошибке, a UserConnection (который является типом вашей sender переменной) не может быть приведен к an OnlinePAFPlayer . Вы не можете просто изменить любой объект на любой другой объект, откуда компилятор может знать, как это сделать? Должен быть способ получить правильную инициализацию OnlinePAFPlayer в этом API. Я предлагаю прочитать документацию по этому API.

Ответ №1:

Причина вашего исключения заключается в том, что класс OnlinePAFPlayer не распространяется на UserConnection или что в API указан метод преобразования, который является типом вашего sender -object .

Чтобы получить PAFPlayer , вы можете использовать PAFPlayerManager.getInstance().getPlayer("Notch") . Если игрок находится в Сети, вы можете привести его к OnlinePAFPlayer . В качестве альтернативы вы можете преобразовать ProxiedPlayer -objects в OnlinePAFPlayer ‘s , аналогично описанному выше методу.

Я бы посоветовал вам сначала попытаться преобразовать ваш sender -object в ProxiedPlayer, а затем преобразовать его, используя метод, упомянутый выше 🙂