• 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!

Abfragen ob eine Location in einer undefinierten Form (Selection) ist

IDK_WHO_AM_I

Kuhfänger
Registriert
30 Mai 2017
Beiträge
66
Alter
28
Diamanten
300
Minecraft
IDK_WHO_AM_I
Hey Leute,

ich hab mal wieder ne Frage die ist aber etwas komplizierter xD
Ich arbeite gerade an einem Hotel Plugin und da kamm ndie Frage auf wieso nur Eckige Räume und dann hatte ich mir überlegt wie man eine undefinierte Form setzten kann.

fwNr6v

Das war soweit kein Problem einfach ein mehr Punkte System das hochzählt bei jeder neuen "Ecke"
Nun stoße ich jedoch auf das Problem das ich testen bzw. abfragen muss ob eine Location (z.B. Ein Block oder Spieler) innerhalb dieser Area is.

Nun geht das dank des 3 Dimensionalen Koordinatensystem in Minecraft nicht so einfach wie gedacht.

Nun meine eigentliche Frage hat jemand eine Idee wie ich das bei jeder der oben gezeigten Formen abfragen könnte. bzw. hat jemand optimalerweise den Algorithmus dafür zur Hand :D
Wenns nicht für alle gemeinsam geht mit der selben methode eventuell zumindest wie es beim L-Förmigen gehen würde xD

PS: Ich nutzte keine WorldEdit API! xD

Grüße Maxi
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Benutz die World Edit API macht es viel einfacher :p
Ansonsten musst du dir die mühe machen die Regionen in Rechtecke und Dreiecke zu unterteilen.
Wenn du dann auch noch die einzelnen punkte auf verschiedene höhen setzten willst... na dann gute Nacht :p
Die einteilung sollte der einfachste weg sein. es gibt sicher auch alorithmen zum testen ob ein Punkt innerhalb eines Polygons ist,
musst du aber für dich entscheiden wie du das machst.

Zu guter letz: Du solltest die einzelnen Punkte alle auf die gleiche y position beschränken, bzw. dem körper den niedrigsten Punkt und den höchsten Punkt als werte setzten, so macht world edit es auch. Ansonsten kannst du da einige tage dran sitzen um es hinzubekommen.
 

IDK_WHO_AM_I

Kuhfänger
Registriert
30 Mai 2017
Beiträge
66
Alter
28
Diamanten
300
Minecraft
IDK_WHO_AM_I
@JTK222 Danke für die Antwort, aber wie ich schrieb ich werde die WE APi nicht nutzten weil die kacke is xD und ich grundsätzlich ohne API's arbeite außer mit meinen eigenen xD

Außerdem unterstützt die WE API nicht L Förmge Selections :(

Ah ja wir lassen mal das Herz weg xD
 
Zuletzt bearbeitet:

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Mein Kopf raucht wie ein Industrieshornstein :D
I know the feel, bro.

Ich hätte ein paar Ideen, wie man das wohl hinbekommen täte, aber mit mathematischer Kunst hat das nichts zu tun.
Eher mit roher Gewalt, wenn auch nicht ganz so schlimm...

Wie speicherst du denn momentan die Koordinaten einer Area und wie prüfst du ob eine Koordinate in diesem Bereich ist?
Täte mich sehr interessieren, wie dein aktueller Ansatz da aussieht.
 

Blockempirium

Schafhirte
Showcase Gewinner
Registriert
2 Februar 2015
Beiträge
117
Diamanten
321
Minecraft
Mulcho
Da du in deinen Beispielen ausschließlich einfache Polygone als Form verwendest ,also solche die sich nicht selbst schneiden, bietet sich die “Strahl-Methode” (ray-casting-algorithm) an. Gibt noch ein paar andere Vorgehensweisen für Punkt-in-Polygon-Probleme, aber die hier ist relativ einfach zu implementieren, vor allem da man im MC-Koordinatensystem so einfach mit Richtungsvektoren arbeiten kann.

Im Prinzip konstruierst du eine Linie die sowohl deinen Punkt (Location) als auch deinen Raum kreuzt und schaust dann, wie oft du die Grenzen deines Raumes durchquerst bis du auf deinen Punkt triffst. Ist die Anzahl der Durchquerungen 0 oder eine gerade Zahl, ist der Punkt nicht enthalten. Ist die Anzahl ungerade liegt der Punkt innerhalb.

iOJqxYc.png


Ich hab das für die interessanteren Formen mal in deine Skizze eingetragen. Die roten Zahlen sind die Schnittpunkte mit dem Raum. Natürlich musst du wenn du alles selbst machst auch noch eine Möglichkeit ersinnen, wie du feststellst wann eine Grenze durchquert wurde, wie du deine Testlinie dimensionierst usw.

PS: Wenn du deine Regionen auf WorldGuard aufbaust ist die Sache, unabhängig wie komplex deine Form ist, in wenigen Zeilen erledigt und du musst dich ingame auch nicht darum kümmern ein System zu basteln um Gebiete zu definieren. Wenn du immer noch alles selbst machen magst, versuchs mit der geschilderten Lösung.
 
Zuletzt bearbeitet:
Oben