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

Помогите Как отправить игроку пакет спавна моба.

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

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

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    Сам вопрос в названии темы, есть ProtocolLib, ядро 1.7.10...

    С помощью такого кода могу отправить игроку фейковый взрыв:
    Код:
    ProtocolManager manager = ProtocolLibrary.getProtocolManager();
    PacketContainer fakeSpawn = manager.createPacket(PacketType.Play.Server.EXPLOSION);
            fakeSpawn.getDoubles().
                    write(0, p.getLocation().getX()).
                    write(1, p.getLocation().getY()).
                    write(2, p.getLocation().getZ());
            fakeSpawn.getFloat().write(0, 3.0F);
         
                manager.sendServerPacket(p, fakeSpawn);
               
    Как таким же способом можно заспавнить моба?
    Тут: JavaDocs http://ci.dmulloy2.net/job/ProtocolLib/javadoc/index.html?overview-summary.html
    нашел только название самого пакета SPAWN_ENTITY
     
  2. Хостинг MineCraft
    <
  3. ensirius

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

    Баллы:
    123
  4. Автор темы
    Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    Спасибо, но видел это уже и не раз, но как этим пользоваться:confused:
     
  5. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
  6. Автор темы
    Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    Готовый? его же еще собрать надо...:oops: хотел без него, щас методом тыка пытаюсь понять какие пакеты отправляются сервером клиенту при спавне моба, и хочу попробовать записать в какоц-нибудь файл все данные из этого пакета. Пока только понял что отправляется пакет PacketType.Play.Server.ENTITY_TELEPORT после него отправляются пакеты с передвижениями, скорее всего PacketType.Play.Server.ENTITY_VELOCITY
     
  7. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    [​IMG]
     
  8. Автор темы
    Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    Что ты имел ввиду?
    Действительно муть какую-то написал) посмотрел из чего состоит пакет телепорта, там интовые координаты вместо double(как написано на вики должны быть именно дабл) и к тому же больше реальных координат приблизительно в 30 раз, и вместо ID типа моба отправляется уникальный ID... да и вообще видимо этот пакет мне не нужен, Пытался ловить отправку пакета SPAWN_ENTITY ,не получалось(при спавне моба он не отправлялся) но оказалось что он отправляется для вещей...[DOUBLEPOST=1481290551,1481286137][/DOUBLEPOST]Проблемка появилась с PacketPlayOutSpawnEntityLiving
    [​IMG]
    INT ???? они же double должны быть (и как писал выше, отличаются от реальных примерно в 30 раз)
    а именно x примерно в *36-38 раз, y почти всегда ровно в *32 z в *28
     
  9. Dymeth

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

    Баллы:
    76
    Возможно ядро старое. На 1.11 вот так:
    upload_2016-12-9_17-40-20.png
     
  10. Автор темы
    Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    так у меня 1.8
    а еще вчера было 1.7.10:good:
    На нем вообще пустой net.minecraft.server ...
    Не хотелось бы 1.11 ставить:oops:
    Может знает кто-нибудь что с этими странными координатами делать[DOUBLEPOST=1481298510,1481297769][/DOUBLEPOST]нашел это)
    Код:
    public PacketPlayOutSpawnEntityLiving(EntityLiving entityliving) {
            this.a = entityliving.getId();
            this.b = (byte) EntityTypes.a(entityliving);
            this.c = MathHelper.floor(entityliving.locX * 32.0D);
            this.d = MathHelper.floor(entityliving.locY * 32.0D);
            this.e = MathHelper.floor(entityliving.locZ * 32.0D);
            this.i = (byte) ((int) (entityliving.yaw * 256.0F / 360.0F));
            this.j = (byte) ((int) (entityliving.pitch * 256.0F / 360.0F));
            this.k = (byte) ((int) (entityliving.aK * 256.0F / 360.0F));
            double d0 = 3.9D;
            double d1 = entityliving.motX;
            double d2 = entityliving.motY;
            double d3 = entityliving.motZ;
    [DOUBLEPOST=1481319540][/DOUBLEPOST]Если не сложно скиньте информацию по работе с метаданными, спавню летучую мышь, а вместо нее какой-то зародишь висит в воздухе, хотел по идее тоже самое только в другом состоянии (с анимацией полета на месте)...
    Код:
    PacketContainer fakeSpawn = Pm.createPacket(PacketType.Play.Server.SPAWN_ENTITY_LIVING);
            fakeSpawn.getIntegers().
                    write(0,228).
                    write(1,65).
                    write(2, (int)(p.getLocation().getX()*32.0D)).
                    write(3, (int)(p.getLocation().getY()*32.0D)).
                    write(4, (int)(p.getLocation().getZ()*32.0D));
            fakeSpawn.getBytes().
                    write(0,(byte)((int)(p.getEyeLocation().getYaw()* 256.0F / 360.0F))).
                    write(1,(byte)((int)(p.getEyeLocation().getPitch()* 256.0F / 360.0F))).
                    write(2,(byte)((int)(p.getEyeLocation().getPitch()* 256.0F / 360.0F)));
            Pm.sendServerPacket(p, fakeSpawn);
    [​IMG][DOUBLEPOST=1481373728][/DOUBLEPOST]Разобрался с метаданными пакета PacketPlayOutSpawnEntityLiving , который у меня посылается через PacketWrapper, но не в этом суть, после него должны отправляться другие пакеты, вопрос - какие?
    Иначе получается чучело моба со скрина...[DOUBLEPOST=1481383344][/DOUBLEPOST]UP[DOUBLEPOST=1481383446][/DOUBLEPOST]Помогите понять, пожалуйста, какие и в каком порядке отправляются пакеты при спавне мобов.:eek:
    Или скиньте мануал какой-нибудь, ссылочку...
     
    Последнее редактирование: 10 дек 2016
  11. Dymeth

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

    Баллы:
    76
    Обычно PacketPlayOutSpawnEntity, а затем PacketPlayOutEntityMetadata. Можешь ещё глянуть PacketPlayOutEntityHeadRotation.
     
  12. Автор темы
    Stamorey

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

    Баллы:
    66
    Имя в Minecraft:
    Stamorey
    Спасибо, уже сам разобрался, прослушивая отправку пакетов, без PacketPlayOutEntityMetadata летучая мышь спавнится в виде зародыша) осталось только понять что делать с List<WrappedWatchableObject> который передается в этом пакете:cry:[DOUBLEPOST=1481396241,1481389985][/DOUBLEPOST]Вроде как тоже самое. что и WrappedDataWatcher, только не пойму зачем нужны були, при спавне моба отправляется всегда два пакета PacketPlayOutEntityMetadata , в первом все були==true , во втором наоборот,
    =========================
    ID:25>>>11<<<
    I+++_16<<<
    I+++_DataWatcherItem[index=16, value=1, dirty=true]<<<
    I+++_15<<<
    I+++_DataWatcherItem[index=15, value=0, dirty=true]<<<
    I+++_9<<<
    I+++_DataWatcherItem[index=9, value=0, dirty=true]<<<
    I+++_8<<<
    I+++_DataWatcherItem[index=8, value=0, dirty=true]<<<
    I+++_7<<<
    I+++_DataWatcherItem[index=7, value=0, dirty=true]<<<
    I+++_6<<<
    I+++_DataWatcherItem[index=6, value=6.0, dirty=true]<<<
    I+++_4<<<
    I+++_DataWatcherItem[index=4, value=0, dirty=true]<<<
    I+++_3<<<
    I+++_DataWatcherItem[index=3, value=0, dirty=true]<<<
    I+++_2<<<
    I+++_DataWatcherItem[index=2, value=, dirty=true]<<<
    I+++_1<<<
    I+++_DataWatcherItem[index=1, value=300, dirty=true]<<<
    I+++_0<<<
    I+++_DataWatcherItem[index=0, value=0, dirty=true]<<<
    =========================
    ID:25>>>11<<<
    I+++_16<<<
    I+++_DataWatcherItem[index=16, value=0, dirty=false]<<<
    I+++_15<<<
    I+++_DataWatcherItem[index=15, value=0, dirty=false]<<<
    I+++_9<<<
    I+++_DataWatcherItem[index=9, value=0, dirty=false]<<<
    I+++_8<<<
    I+++_DataWatcherItem[index=8, value=0, dirty=false]<<<
    I+++_7<<<
    I+++_DataWatcherItem[index=7, value=0, dirty=false]<<<
    I+++_6<<<
    I+++_DataWatcherItem[index=6, value=6.0, dirty=false]<<<
    I+++_4<<<
    I+++_DataWatcherItem[index=4, value=0, dirty=false]<<<
    I+++_3<<<
    I+++_DataWatcherItem[index=3, value=0, dirty=false]<<<
    I+++_2<<<
    I+++_DataWatcherItem[index=2, value=, dirty=false]<<<
    I+++_1<<<
    I+++_DataWatcherItem[index=1, value=300, dirty=false]<<<
    I+++_0<<<
    I+++_DataWatcherItem[index=0, value=0, dirty=false]<<<
    =========================
     
  13. Dymeth

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

    Баллы:
    76
    Обожаю баккит за такие приколюхи...
     
  14. ensirius

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

    Баллы:
    123
    Идиоты которые не знают что такое баккит меня больше радуют. Баккит это враппер на ванильном майне. Следовательно эти "приколюхи" самого майна.
     
  15. Dymeth

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

    Баллы:
    76
    А кто сказал, что пакеты NMS отправляет? Вполне вероятно, что это делает сам баккит. Да они и зафиксить могли бы этот кал при желании, думаю...
     
  16. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Неа. в ведре лишь абстракт обертка над сервером.[DOUBLEPOST=1481625746,1481625671][/DOUBLEPOST]Протоколлиб же обертка над всеми пакетами.
     
  17. Dymeth

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

    Баллы:
    76
    Они ж вроде делают патчи NMS, нет? Ну, Спигот как минимум...
     
  18. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Внедряют ивенты в код майна, и ведроапи на абстрактных методах. Крафтведро прослойка между апи и сервером.
    nms, это переменные после обфускации майна.
     
  19. Dymeth

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

    Баллы:
    76
    Я к NMS отношу весь пакет net.minecraft.server со всем его содержимым...
     
  20. alexandrage

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

    Баллы:
    173
    Skype:
    alexandr0116
    Так и есть.
     

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