• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spieler zwischen zwei Punkten fliegen

WlanGehtNicht

Schafhirte
Registriert
30 Mai 2017
Beiträge
105
Diamanten
312
Hallo,
ich schreibe gerade an einem Plugin, komme aber nicht weiter, da ich nicht genau weiß, wie ich das umsetzen soll.

Spieler A setzt 2 Punkte auf der Map. Die 2 Punkte werden in der Config gespeichert. (habe ich gemacht).

Jetzt kommt der Punkt, wo ich nicht weiter weiß.
Spieler B kann jetzt aber nicht in das Rechteck von den beiden Eckpunkten fliegen.

Kann mir da bitte jemand weiter helfen?
 
Lösung
Ich verstehe nicht ganz, was das Problem ist. Deine Beschreibung ist etwas unklar, ob der Spieler nun zwischen den Punkten fliegen soll oder eben nicht zwischen den Punkten fliegen können soll.
Möchtest du einen Spieler von Punkt A zu Punkt B fliegen lassen? Dann erstelle einfach einen Vektor zwischen diesen Punkten und bewege den Spieler in Richtung des Vektors (Player#setVelocity)

Möchtest du nicht, das ein Spieler sich zwischen zwei Punkte bewegt? Vergleiche die Position des Spielers mit der der beiden Punkte, um herauszufinden ob er sich in dieser befindet (simple Mathematik, einfach X/Y/Z Koordinaten vergleichen) und wenn ja teleportiere ihn wieder zurück. Zum Vergleich kann sich die Nutzung einer IntRange anbieten, z.B...

Malfrador

Threadripper
Registriert
16 Juni 2013
Beiträge
1.473
Diamanten
396
Minecraft
Malfrador
Ich verstehe nicht ganz, was das Problem ist. Deine Beschreibung ist etwas unklar, ob der Spieler nun zwischen den Punkten fliegen soll oder eben nicht zwischen den Punkten fliegen können soll.
Möchtest du einen Spieler von Punkt A zu Punkt B fliegen lassen? Dann erstelle einfach einen Vektor zwischen diesen Punkten und bewege den Spieler in Richtung des Vektors (Player#setVelocity)

Möchtest du nicht, das ein Spieler sich zwischen zwei Punkte bewegt? Vergleiche die Position des Spielers mit der der beiden Punkte, um herauszufinden ob er sich in dieser befindet (simple Mathematik, einfach X/Y/Z Koordinaten vergleichen) und wenn ja teleportiere ihn wieder zurück. Zum Vergleich kann sich die Nutzung einer IntRange anbieten, z.B. so.
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Für eine performante und gute Implementierung empfiehlt es sich zudem, ein bestehendes Plugin, was das alles kann zu benutzen bzw. es mittels der API zu erweitern.
Ich würde da einmal WorldGuard empfehlen.

Was du dafür brauchst:
  • WorldGuard als Abhängigkeit
  • Eine Custom Flag, um anderen Spieler das "Fliegen" in einer Region zu verbieten. Ich würde dort dann auf eine StateFlag setzen.
  • Ein SessionHandler, der die Bewegungen der Spieler performant überwacht. (ich würde FlagValueChangeHandler<State> empfehlen, damit hast du bereits schon viel vorgefertigt und musst nur noch selbst selber machen). Für die Art und Weise, wie du diesen Handler richtig einsetzt, kannst du dir die EntryFlag von WorldGuard anschauen.
Mit so einer Umsetzung sparst du dir selbst einiges an Zeit und WorldGuard ist bei der Berechnung bereits optimiert und somit ist das dann auch performanter als ein eigenes Plugin.
 
Oben