EntityVillager sieht immer nach Süden!

  • Abend,


    ich habe heute festgestellt das Entitys die per Packet gespawnt werden(zumindest der Villager) immer nach Süden schauen.


    Die Angabe der Variable Yaw und Pitch scheint der API also wurscht zu sein.


    Hab auch keine andere Methode mit der sich das ändern lässt grad gefunden.


    Kennst da einer eine Methode das zum laufen zu kriegen.


    So versende ich das Packet:

    Code
    1. WorldServer world = ((CraftWorld)loc.getWorld()).getHandle();
    2. EntityVillager villager = new EntityVillager(world);
    3. villager.setLocation(loc.getX(), loc.getY(), loc.getZ(), loc.getYaw(), loc.getPitch());
    4. villager.setCustomName("§8» §a"+storename);
    5. storevillagers.put(all, villager);
    6. PacketPlayOutSpawnEntityLiving packet = new PacketPlayOutSpawnEntityLiving(villager);
    7. ((CraftPlayer)all).getHandle().playerConnection.sendPacket(packet);


    lg

  • Versuchs mal mit dem PacketPlayOutEntityHeadRotation Packet sollte das sei was du suchst


    Ich weiß nicht ob es dein Ziel ist die NPC einfach fest in eine Richtung schauen zu lassen, aber wenn du eh schon jedem Spieler so einen NPC spawnst mach doch das er immer den Spieler anschaut.

    Find ich besser als wenn z.B. der Schmied nur dumm in die Luft starrt und mich nicht anschaut.

    Ich meine das würde über das Target gehen :|

    If you are homeless ... just buy a house, duh!

    and if you wanna have a plugin matching your conditions ... just code it yourself!

  • Versuchs mal mit dem PacketPlayOutEntityHeadRotation Packet sollte das sei was du suchst


    Ich weiß nicht ob es dein Ziel ist die NPC einfach fest in eine Richtung schauen zu lassen, aber wenn du eh schon jedem Spieler so einen NPC spawnst mach doch das er immer den Spieler anschaut.

    Find ich besser als wenn z.B. der Schmied nur dumm in die Luft starrt und mich nicht anschaut.

    Ich meine das würde über das Target gehen :|

    Abend,


    danke für die Infos :)

    Ich Arbeite noch nicht so lange mit dem Packets, erst seit..puh..1-2 Monaten...meistens auch bisschen Experiementieren..


    Und ja das mit dem Anschauen wäre natürlich perfekt....aber....ich habe mir diesen Packet nun mal angesehen, dabei muss ein Byte übermittelt werden, welche Variable ich da angeben soll ich mir nicht geläufig.....hab dann auch probiert zum testen "(byte) 2", woraufhin jedoch kein Villager mehr spawnte :/


    Kannst mir da mal auf die Sprünge helfen?

  • Leider habe ich nie Packets verwendet. Zumindest nicht so das ich dir sagen könnte was es fordert als byte aber nach einer kurzen Google Suche fand ich das hier:

    Ist aus einem Tutorial Video von GerVobis und du solltest das nicht einfach kopieren sondern dir hiermit erschließen wie man das Ganze verwendet:

    Code
    1. public byte getFixRotation(float yawpitch){
    2. return (byte) ((int) (yawpitch * 256.0F / 360.0F));
    3. }

    Ich denke damit kann man ganz gut verstehen wie das Packet verwendet wird.

    If you are homeless ... just buy a house, duh!

    and if you wanna have a plugin matching your conditions ... just code it yourself!

  • Abend,


    hab das ganze bereits auf eigene Faust und ohne Google herausgefunden, es war nach paar Test verdammt schnell klar das sich der Villager nach soundsoviel Grad bewegt.....und Yaw in Grad umschreiben ging auch ganz fix.


    Eher noch eine Frage, das mit dem Target, wie ist das gemeint? Im MoveEvent wäre das doch sehr Leistungsintensiv, weil man den Villager die ganze Zeit "portet" praktisch...


    Wie würdet ihr das lösen?


    LG


    Wegen abschreiben....hab ich vor 9 Jahren als ich mit Java angefangen habe selten getan.....sonst hatte ich immer das Buch "Java ist auch eine Insel", da alle 4 Bände.

    Nur mir erschließt sich gerade keine Leistungseffektive Target methode.