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

Помогите Пакет PlayerInfo в 1.7.10

Тема в разделе "Разработка плагинов для новичков", создана пользователем Smaylik03, 26 июн 2015.

  1. Автор темы
    Smaylik03

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

    Баллы:
    88
    Skype:
    Bruse_Williams
    Имя в Minecraft:
    Alex_Wells
    Здравствуйте. По заказу я написал плагин, который добавляет фейковых игроков. Все прекрасно работает на 1.7.9. Для теста я использовал 1450 билд спигота. У заказчика же 1649. Поставив его я увидел, что ProtocolLib начал ругатся на строку, в которой я записываю онлайн ли человек (3 строка):

    Код:
    PacketContainer fakePlayerPacket = protocolManager.createPacket(PacketType.Play.Server.PLAYER_INFO);
    fakePlayerPacket.getStrings().write(0, playerName);
    fakePlayerPacket.getBooleans().write(0, Boolean.valueOf(online)); // Эта строка - ошибка
    fakePlayerPacket.getIntegers().write(0, Integer.valueOf(ping));
    Отличие 1450 и 1649 билдов в том, что в используется разное minecraft API. У меня это был спигот 1.7.9 с АПИ от 1.7.9. На 1649 билде это тоже спигот 1.7.9 но уже с АПИ от 1.7.10. Думаю что в 1.7.10 что-то поменяли в пакете, но на вики есть только категории 1.7/1.8, без уточнений.

    Без этой строчки никак - ибо она говорит клиенту онлайн ли игрок... если ее убрать то клиент будет вечность думать что какой-то бот/игрок все еще здесь, хотя он мог выйти. Не знаю что делать :C

    @fromgate сюда, я из твоего плагина этот алгоритм выковырял)

    PS: нет, новый механизм из 1.8 тут не работает :C
     
  2. Хостинг MineCraft
    <
  3. saharin94

    saharin94 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    RikkiLooh
    Имя в Minecraft:
    RubukkitDniwe
    > Все прекрасно работает на 1.7.9.
    А зачем Вы используете старьё? В каждой линейке стоит выбирать последнюю версию.
     
  4. Автор темы
    Smaylik03

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

    Баллы:
    88
    Skype:
    Bruse_Williams
    Имя в Minecraft:
    Alex_Wells
    Я не заморачиваюсь.. у клиента самая новая версия, и на самой новой ничего не работает, а на "старье" работает. Но я понятия не имею как заставить это работать на "новой" версии 1.7, то-есть на последнем оффициальном билде 1649. Плагин @fromgate тоже не работает, никакая версия. Думаю, мб баг в спиготе..[DOUBLEPOST=1435336073,1435335842][/DOUBLEPOST]
    Нет, я только подсмотрел код работы с пакетами (то, что лежит в теме), не более.

    В последней да, я видел. Только вот последняя уже на 1.8 и она не заводится ни на 1450 ни на 1649 билдах, так-что облом. В 1.7 даже нету класса PlayerInfoData..
     
  5. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Код:
      private int action;
      private GameProfile player;
      private int gamemode;
      private int ping;
      private String username;
    Вот какие значения в пакете 1.7.10
    Булевых нету.
    экшен пинга - 2
     
  6. Автор темы
    Smaylik03

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

    Баллы:
    88
    Skype:
    Bruse_Williams
    Имя в Minecraft:
    Alex_Wells
    эмм? А где замена булу online? Если убрать булы то в табе висят все боты и все игроки аж до перезахода, хотя они выходили.

    GameProfile(UUID, String) - вместо стринга должно быть?
     
  7. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Документация по пакету
     
  8. Автор темы
    Smaylik03

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

    Баллы:
    88
    Skype:
    Bruse_Williams
    Имя в Minecraft:
    Alex_Wells
    Эмм.. это же для 1.8..... А если это для 1.7.10, то можно тупому идиоту, мне, пример?
     
  9. Автор темы
    Smaylik03

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

    Баллы:
    88
    Skype:
    Bruse_Williams
    Имя в Minecraft:
    Alex_Wells
    Попробуй билд 1649 с сайта spigot.org.. если заработает, то вопрос как..
     
  10. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Обычно я беру JD-Gui, кидаю туда КБ и смотрю сурсы классов пакетов и всё интуитивно понятно, какое поле за что отвечает, но если непонятно, то этот сайт всегда выручает
    Хотя когда я стал юзать Wrapped пакеты ProtocolLiba, нужда почти отпала:)
     
  11. Автор темы
    Smaylik03

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

    Баллы:
    88
    Skype:
    Bruse_Williams
    Имя в Minecraft:
    Alex_Wells
    Wrapped? Не находит) Я только нашел Wrapped пакеты в вице сурсов но они на 1.7.2 :C
    Вот код из них:
    Код:
    public void setOnline(boolean value) {
            handle.getSpecificModifier(boolean.class).write(0, value);
        }
    :C

    Ой, я идиот. И вправду - зашел в код спигота и все понял) Сорри за тупость) Но тему не закрывать - это же я)[DOUBLEPOST=1435339979,1435338579][/DOUBLEPOST]UPD: как достать GameProfile ботов?
     
    Последнее редактирование: 26 июн 2015

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