Beiträge von TASSIA710

    Also.. folgender Code funktioniert bei mir Einwand frei:




    Zitat

    Was mich wundert, dass man je nach dem, wo man steht, einen drall nach links oder rechts hat. Kann man das irgendwie verhindern?

    Der Code ist jetzt darauf ausgerichtet, dass er dich immer vom Mittelpunkt der Region, und nicht der Kante der Region wegschleudert.

    Einen so starken rechts/links Drall wie in deinem Video sollte er allerdings nicht haben (hat er bei meinem EventListener auch nicht)

    Das heißt aber, je nachdem wo an der Kante der Spieler versucht die Region zu betreten, wird die Richtung ein bisschen beeinflusst.


    Vielleicht verstehst du mit meiner angehängten Grafik etwas besser was ich meine.

    Rot: Regions Mittelpunkt

    Grün: Regions Grenze

    Blau: Punkte an denen der Spieler versucht, die Region zu betreten

    Schwarz: Richtung, in die der Spieler geschleudert wird


    Man könnte das Plugin auch so programmieren, dass er von der Kante und nicht vom Mittelpunkt weggeschleudert wird,

    das wäre dann aber vermutlich aufwendiger und würde kein bisschen helfen, wenn es momentan bei dir noch nicht mit dem Mittelpunkt klappt.




    Falls du es doch probieren willst, hätte ich hier einen Ansatz:

    Mal erklärt:

    Bei diesem Ansatz schaust du, in welche Richtung er mehr geworfen wird (x oder z) und lässt dann die andere Richtung komplett weg.

    Aber das ist nur ein Ansatz. Es gibt vermutlich eine Menge besserer Lösungen, die auch andere Formen als nur ein Quadrat unterstützen. ;)




    Ich schreibe schon wieder viel zu viel, probiers mal mit meinem EventListener (musst ggf. die If-Abfrage abändern)

    und schau ob es funktioniert :)

    Da bin ich jetzt selber überfragt. ?(

    Ich installiere mir mal eben WorldGuard auf meinem lokalen Server

    und probiere es selber aus. Wenn ich eine Lösung finde, gebe ich dir Bescheid :)


    Ich verstehe leider nicht ganz, was du mit dem Code versuchst. ?(

    So wie er jetzt dasteht, könntest du es doch auch so kürzen:

    Java
    1. location = new Location(w,
    2.         e.getRegion().getMaximumPoint().getX(),
    3.         e.getRegion().getMaximumPoint().getY(),
    4.         e.getRegion().getMaximumPoint().getZ());
    5. // (wenn der MaximumPoint nicht schon bereits eine Location ist)




    Ich würde den Mittelpunkt der Region so einfach ausrechnen


    Und dann halt wie du es dann auch machst, so weiter arbeiten:

    Ich bin leider auch kein wirklicher Experte in Punkto 3D-Vektor-Mathematik / Vektor-Geometrie / Wie-auch-immer-das-in-Fachsprache-heißt,

    deswegen fällt es mir ein bisschen schwer dir das möglichst einfach zu erklären.


    Mit meinem bisschen Erfahrung habe ich mal diesen kleinen Befehl hier geschrieben.

    Er wirft den Spieler von der Start Position der Welt weg.




    Funktionsweise:


    Wenn du ihn ausführst, nimmt der einen Punkt (in meinem Fall hier den World Spawn) und die Spieler Position.

    Dann errechnet er die Richtung (in Anlage 1 dargestellt).


    Die Rechnung dabei ist Folgende:

    x = x1 - x2;

    z = z1 - z2;


    (Neben-Fakt: Wenn du den Spieler zum Mittelpunkt werfen möchtest, ist die Rechnung x = x2 - x1 und z = z2 - z1 )


    Y ist egal, da wir die horizontale Richtung wissen wollen.

    Die Höhe legen wir später fest.


    Mit diesem X und Z Wert konstruieren wir uns einen Richtungsvektor.

    Diesen normalisieren wir und multiplizieren ihn dann mit einem Faktor.

    Dadurch hat die Entfernung zum Punkt 1 keinen Einfluss auf die Kraft, des Wurfes.

    Der Faktor bestimmt wie stark der Wurf sein soll.


    Anschließend setzen wir den Y-Wert (Höhe), damit der Spieler auch nach oben

    katapultiert wird, und so nicht an irgendwelchen Blöcken am Boden hängenbleibt.


    Anschließend werfen wir den Spieler nur noch in die Richtung.




    Hier ist einmal der Quellcode:




    Ich habe dir noch ein Zitat rausgesucht, vielleicht verstehst du

    damit die Berechnung der Richtung ein bisschen besser.

    A nice way to remember which way the subtraction goes is to think of what the vector actually does. Imagine vector v resting at p1, pointing and connecting to p2. This means that p1 + v = p2. Therefore, v = p2-p1




    Auf dein Problem angewandt, könntest du den Code in dem RegionEnterEvent-Listener ausführen und statt
    dem Weltstartpunkt, den Mittelpunkt der Region wählen. Dann würde der Spieler immer beim betreten der

    Region von dessen Mittelpunkt weg- und ergo wieder aus der Region raus geworfen werden.

    Aber spiel am besten mal ein bisschen mit dem Befehl herum. Ich glaube irgendwann verstehst du so ein bisschen das Prinzip.


    Sollte irgendetwas unklar sein, zögere nicht zu fragen ;)

    Wenn man deine Fehlermeldung analysiert, sagt diese nur, dass du unzulässige Zeichen verwendest.

    Nachdem der Fehler aber in der 1. Zeile auftritt, also der Paket-Deklaration, macht dies recht wenig Sinn.


    Ich würde mal sagen, dass (nachdem die Zeichen u.a. 2-Bytes lang sind) du ein ungültige Datei-Kodierung verwendest.

    Versuch mal in deinem Editor, deine Datei-Kodierung auf UTF-8 zu ändern.

    Benutz Escape-Sequenzen:

    '\u00c4' ==> 'Ä'


    Erklärung:

    \uXXXX ist eine Escape-Sequenz in Java, d.h. eine "Zeichenumschreibung", wobei XXXX für den Hex-Wert des Zeichens stehen.

    Die Hex-Werte von Zeichen kannst du u.a. hier abfragen.

    Wichtig dabei ist, dass XXXX immer 4 Zeichen lang ist!

    Ist der Hex-Zahl nur 2 Zeichen lang (z.B. C4) musst du dies zu \u00c4 ändern.

    Ebenfalls wichtig ist, dass du nicht \XXXX schreibst, sondern \uXXXX!


    Beispiel (Schreibt Grüß Gott!):

    Code
    1. System.out.println("Gr\u00fc\u00df Gott!");

    Versuch mal, die obere Zeile so zu ändern:

    Java
    1. static List<String> seite2head;
    2. static {
    3. seite2head = new ArrayList<>();
    4.     seite2head.add("§8zu Seite 2");
    5.     seite2head.add(" ");
    6. }

    Oder du initialisierst die Liste im onEnable()

    Ist der Server lokal gehostet?

    In diesem Fall würde einmal ein Java Update durchführen und schauen, ob die richtige Version (32 Bit / 64 Bit) installiert ist.


    Alternativ natürlich beim Hoster nachfragen, ob die richtige Java Version für einen Hexxit Server installiert ist. ;)