# Minecraft neue setDirection() (Blickrichtung) setzten



## modder_MC (16. Okt 2019)

Hallo,

ich programmiere zurzeit ein Minecraft Plugin. Für dieses Plugin muss ich nun die Blickrichtung meines Spielers an einen bestimmte stelle richte (unabhängig von Blöcken). 

Ich habe mich bereits etwas schlau gemacht, allerdings keine Lösung gefunden.
Vielleicht gibt es ja jemanden der mir ein kleines Beispiel geben kann. Würde mich sehr freuen.


Hier mein Code, werden keine Fehler etc. angezeigt.
Passiert allerdings auch nix );

VG
modder
Danke im voraus (;


----------



## looparda (16. Okt 2019)

Vielleicht wird das Code-Stück nicht aufgerufen.. wer weiß.


----------



## modder_MC (16. Okt 2019)

looparda hat gesagt.:


> Vielleicht wird das Code-Stück nicht aufgerufen.. wer weiß.



Wenn ich player.sendMessage(playerLookDirection.normalize().toString()); eingebe wird im Chat eigentlich der Vektor ausgegeben, nur irgendwie auch nicht. Vielleicht wird er falsch gesetzt bzw. was falsch ausgeführt?


----------



## krgewb (17. Okt 2019)

Hast du das auf einem Forum?
Wenn x  fünf ist:
5/2 - 5 
= 2,5 - 5
= -2,5

Sorgt normalize dafür, dass die Zahlen nur von -1 bis 1 gehen? Wie legt es fest, was sozusagen 100% entspricht und somit als Grundlage dienen soll?


----------



## modder_MC (17. Okt 2019)

krgewb hat gesagt.:


> Hast du das auf einem Forum?
> Wenn x  fünf ist:
> 5/2 - 5
> = 2,5 - 5
> ...



 Okay, Danke für den Hinweis (;

Weißt du zufällig einen alternative mit der ich die Direction von meinen Spieler festlegen kann. 
Wäre echt net.

VG
modder


----------



## Elektronisch (17. Dez 2019)

Hey,

wenn auch etwas spät hier eine mögliche Lösung:

In Minecraft können Vectoren nicht zur Veränderung der "Blickrichtung" benutzt werden. Um die Blickrichtung zu verändern musst du den Spieler teleportieren. player.teleport(location)

Im Location-Objekt können zwei Floats angegeben werden (yaw, pitch). 

Der Wert Yaw bestimmt die Ausrichtung Links <-> Rechts
Der Wert Pitch bestimmt die Ausrichtung Oben <-> Unten

Anbei ein kleiner Schnipsel um einen Spieler an eine bestimmte Stelle schauen zu lassen:


```
private void lookAt(final Player player, final Location targetLocation) {
        final double xDiff, yDiff, zDiff;
        xDiff = targetLocation.getX() - player.getLocation().getX();
        yDiff = targetLocation.getY() - player.getLocation().getY();
        zDiff = targetLocation.getZ() - player.getLocation().getZ();
        final double distanceXZ = Math.sqrt(xDiff * xDiff + zDiff * zDiff);
        final double distanceY = Math.sqrt(distanceXZ * distanceXZ + yDiff * yDiff);
        float yaw = (float) Math.toDegrees(Math.acos(xDiff / distanceXZ));
        final float pitch = (float) (Math.toDegrees(Math.acos(yDiff / distanceY)) - 90);
        if (zDiff < 0.0)
            yaw += Math.abs(180 - yaw) * 2;
        yaw = yaw - 90;
        player.teleport(new Location(player.getWorld(), player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ(), yaw, pitch));
    }
```

Viel Spaß noch


----------

