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

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

Discussion in 'Разработка плагинов для новичков' started by Stamorey, Dec 8, 2016.

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

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

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

    С помощью такого кода могу отправить игроку фейковый взрыв:
    Code:
    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 Старожил Пользователь

    Trophy Points:
    123
  4. Автор темы
    Stamorey

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
  6. Автор темы
    Stamorey

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    [​IMG]
     
  8. Автор темы
    Stamorey

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

    Trophy Points:
    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 Активный участник Пользователь

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

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

    Trophy Points:
    66
    Имя в Minecraft:
    Stamorey
    так у меня 1.8
    а еще вчера было 1.7.10:good:
    На нем вообще пустой net.minecraft.server ...
    Не хотелось бы 1.11 ставить:oops:
    Может знает кто-нибудь что с этими странными координатами делать[DOUBLEPOST=1481298510,1481297769][/DOUBLEPOST]нашел это)
    Code:
    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]Если не сложно скиньте информацию по работе с метаданными, спавню летучую мышь, а вместо нее какой-то зародишь висит в воздухе, хотел по идее тоже самое только в другом состоянии (с анимацией полета на месте)...
    Code:
    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:
    Или скиньте мануал какой-нибудь, ссылочку...
     
    Last edited: Dec 10, 2016
  11. Dymeth

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

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

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

    Trophy Points:
    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 Активный участник Пользователь

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Trophy Points:
    173
    Skype:
    alexandr0116
    Так и есть.
     

Share This Page