• 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 der Spieler in einem geschlossenen Raum 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 ein kniffliges Thema.

Ich arbeite an einem System bei dem man Hunger hat wenn man an der "normalen" Luft ist weil sie verseucht ist :D
Nun will ich natürlich nicht das das so ist wenn sie in einem Haus sind. Also gibt es eine lägfreie und effiziente Möglichkeit das abzufragen.

Lägfrei deshalb weil ich das natürlich im MoveEvent machen muss :(

Ich hatte ne Idee die funktioniert aber so nicht.

Meine Idee wäre gewesen von der Position des Spielers 360 Grad die Blöcke zu scannen und wenn da in der ersten Reihe Blöcke ein Loch ist dann ist er nicht drinnen aber wenn da jetzt jemand eine Tür um 1 Block verschiebt dann hat man bereits diesen Fall :(

Hoffe jemand von euch hat eine Idee
Grüße Maxi
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Wenn du es lag frei haben möchtest dann mach es 1. nicht im move event sonder vielleicht 1 oder 2 mal die Sekunde.
Und 2. wird das beste wohl sein wenn du überprüfst ob der Spieler Himmel über sich hat.
Und um dann noch ganz sicher zu gehen, vielleicht 10-20 block in alle Himmelsrichtungen, evtl. kannst du dass auch asynchron laufen lassen da du die Blöcke nur ausliest, aber das sollte jemand der sich mit Bukkit besser auskennt beantworten.
 

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
Hey,

das beim Moveevent zu machen halte ich für Wahnsinn. Es gibt nicht so viele Möglichkeiten, in einen geschlossenen Raum zu kommen. Man muss dafür zum Beispiel durch eine Tür gehen, oder Blöcke setzen (außerdem Falltüren, Pistons...). Bei jedem Moveevent einen Check zu machen dürfte ziemlich heftig sein, ich würde da eher nach o.g Events gehen. Der Algorithmus um herauszufinden ob ein Raum geschlossen ist ist an sich natürlich etwas knifflig. Es gibt natürlich Mittel Wege etwas zu tricksen. Das trivialste wäre zum Beispiel, zu versuchen, einen Weg hinauszufinden. Du scheinst relativ neu zu sein deshalb versuche ich es einfach zu halten. Du kannst versuchen, einen Mob einen Weg aus dem Raum finden zu lassen, dadurch hättest du ein Ergebnis, ob es zumindest über den Boden geht. Dann kannst du natürlich versuchen, am Licht etwas zu tricksen: Wie viel Sonnenlicht ist beim Spieler, bekommt er direkte Sonneneinstrahlung ab? Als nächstes könntest du auch eine Kugel an Punkten um den Spieler bilden. Wenn zwischen Spieler und einem Punkt kein Block ist kannst du davon ausgehen, dass er an der Luft gibt. Es gibt natürlich einen Haufen Fälle in denen das Schief gehen kann. Je nach Größe des Raums ist das ganze schon hinfällig. Dann könntest du jedoch weitere Kugeln um die erste legen und gucken, ob sich Punkte verbinden lassen etc. pp., irgendwann landest du dann vermutlich doch wieder bei einem Pathfinderalgorithmus. Wenn man es sich kompliziert macht kann man natürlich auch anfangen, in der Horizontalen unter dem Spieler anfangen zu scannen (Fußboden). Irgendwann müsste ein geschlossener Raum in die Vertikale (Wand) gehen und dann auch wieder in die Horizontale (Dach). Auch hier gibt es wieder Fälle in denen dass fast unmachbar kompliziert werden könnte. Kein einfaches Thema, ich hoffe da war eine brauchbare Idee dabei.
 

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
@SasukeKawaii Mir gefällt die Idee mit den Kugeln. Jedoch wird das natürlich auch nicht sehr einfach wird ne Menge Rechnerei mit PI etc xD

Wenn PI dein größtes Problem ist würde ich mein Geschlossenes Raum System überdenken :p Ich hoffe trotzdem dass du da vielleicht was gebastelt kriegst.
 
Oben