Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Ошибка в названии метода или я чего-то не понимаю?

Тема в разделе "Разработка плагинов для новичков", создана пользователем Exception_Prototype, 4 мар 2017.

Статус темы:
Закрыта.
  1. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Итак в PlayerChangedWorldEvent есть метод getFrom(); - на сколько мне не изменяет память, то From это от\из, другими словами от куда. Суть в том, что есть следующие недопонимание:
    Я стою в обычном мире и прыгаю в портал в ад. Мне выводит сообщение (DIM-1 - мир ада) :
    [​IMG]
    Т.е. я, основываясь на название метода, должен был получить от куда я телепортируюсь т.е. мир "world", но как видно по скрину, мне вывелся мир КУДА я телепортируюсь.

    А теперь вопрос, это ошибка в названии метода или я чего-то не понимаю?
    Хотя в принципе, я брал этот эвент, как раз для того, чтобы ловить перемещение игроков между мирами, но когда увидел название метода From, то сперва не понял, зачем эвент мне кидает ОТ КУДА, если я ожидал, что в этом эвенте я смогу получить мир КУДА перемещается игрок.
     
    Последнее редактирование: 4 мар 2017
  2. Хостинг MineCraft
    <
  3. OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Насколько я знаю, это неправильная работа метода. Может стоить попробовать другой билд спигота.
    PlayerChangedWorldEvent по идее не должен возвращать мир в который телепортировался игрок, потому что это событие случается когда игрок уже телепортировался в другой мир (на что указывает слово Changed). И, соответственно, это событие нельзя отменить потому как оно уже случилось.

    То есть для получения мира, в который телепортировался игрок можно использовать просто Player.getWorld().

    Если же нужно узнавать куда телепортируется игрок еще до того как это случилось, то нужно использовать EntityTeleportEvent и его производные.
     
  4. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Player.getWorld() - прям в эвенте? Т.е. на момент этого эвента, мне должно вывести, что игрок уже в другом мире?
    Вы бы не могли у себя проверить работу этого метода, а я пока тож попробую на другом ядре. И да, я пробую на couldron, так как под него пишу.
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    +1
    EntityTeleportEvent
    getFrom();
    getTo();
     
  6. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    А почему именно EntityTeleportEvent? PlayerTeleportEvent чем то хуже?
     
  7. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Можно конечно же.
     
  8. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Окей, тогда во избежания проблем лучше буду сразу юзать PlayerTeleportEvent.
     
  9. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    +
     
  10. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Это тролинг xD
    Код:
    p.sendMessage(CHAT_PREFIX + "Call event PlayerTeleportEvent");
    p.sendMessage(CHAT_PREFIX + "From " + event.getFrom().getWorld().getName() + " To " + event.getTo().getWorld().getName());
    
    Вывод:
    [​IMG]
    Я находился в аду!
    Что тут не так. Получается он выводит данные уже с мира куда я телепортировался.
     
    Последнее редактирование: 5 мар 2017
  11. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    У тебя котел без моего фикса что ли?
     
  12. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Котёл ваще левый, админ кинул какой то стандартный, чтобы было на чём проверять. основное ядро не кидает, мол там другой более толковый программист его правил, чего переписывал и дописывал. Приходится работать на чём есть. Чего делать то в данной ситуации... если буду тестить на твоём (кинь ссылку пожалуйста) , то фиг знает, там норм будет или нет. Конечно можно будет проверить, но если не будет нормально работать на основном ядре, то многое придётся переделывать...
    P.S. я спать, если чё отвечу завтра.
     
  13. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    46
    Крутой заказчик, разрабатывай под ядро, которое мы переписали, но тебе его не дадим, работай вслепую.
     
  14. Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    +1

    Топ подход
     
  15. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Я сам по себе модерирую на одном проекте Excalibur Craft. Мне некоторые вещи надоели и я мол предложил, го я помогу, мол решу их. Мне такие ну если есть желание, то делай - протестим. Т.е. всё что я делал, я делал для своего комфорта ну и конечно для игроков, ибо элементарные были проблемы, которые ну не как не должны присутствовать на топ проекте. В случае с проблемой в данной теме уже не много иначе, здесь уже имеется реально не то чтобы заказ, а просьба сделать определённый плагин. Кто знает, может как раз после этой просьбы уже будет на что надеется в плане реального вознаграждения и дальнейших задач. Т.е. всё же я у них не работаю "официально", а основной программист занят большим модом, поэтому они не хотят его дёргать на мелочи и мимолётом обратились ко мне, так как знают, что я уже делал плагины и у меня есть знания в этом направление.
     
  16. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    76
    Ну не хотят дёргать - дёрни самостоятельно (я так понимаю, именно он ядро и модифицировал). Мол, посмотри, как дичайше работает PlayerChangedWorldEvent.getFrom(). Если у него есть время и совесть, он поможет тебе разобраться. Хотя это, конечно, не дело, что за основу ядра взяли какую-то кривую (нестабильную) версию.
     
  17. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Эту часть ядра не трогали. Когда сегодня тестировал плагин на основе, то тоже выводилось не ОТ КУДА, а куда телепортируюсь (между мирами). Я конечно понимаю, что это не правильно. Но в данном случае, это решает поставленную задачу. Пока хз чё делать. Просто плагин будет ставится на GalacticCraft, суть в том, чтобы запретить телепортацию через варпы, прем команды пока игрок 1 раз не побывает в том мире естественным способом.
     
  18. OsipXD

    OsipXD Старожил Пользователь

    Баллы:
    173
    Skype:
    osip.fatkullin
    Имя в Minecraft:
    OsipXD
    Можно сделать финт ушами и написать декоратор для этого события, и декорировать событие если используется левое ядро (или из-за чего там такое странное поведение),
     
  19. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Сяпки поржал, "у нас супер кодер ядро с фиксами" без фиксов :D. Тебя дурят.[DOUBLEPOST=1488733809,1488733767][/DOUBLEPOST]Вот держи с исправлением котел https://cloud.mail.ru/public/1fd2bdc3ca7f/site/KCauldron/[DOUBLEPOST=1488733878][/DOUBLEPOST]
    PlayerChangedWorldEvent Вытикает все с того же кода в ядре. Логично что он так же тупит и кажет не верный мир.
     
  20. Автор темы
    Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Баллы:
    46
    Блин. А смысл сейчас на твоём проверять, если ставить то всё равно придётся на другой...
     
  21. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    46
    Я бы отказался.Как это разрабатывать под ядро, которого у тебя нет?Но, я думаю это очередной админ-нуб, который боится что-либо скидывать с сервера, пусть это и банальное ядро.
     
Статус темы:
Закрыта.

Поделиться этой страницей