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

Hilfe bei 1.8 Plugin

maxi1498

Schafhirte
Registriert
19 Februar 2015
Beiträge
138
Alter
28
Diamanten
300
Minecraft
maxi1498
Hey Leute mache gerade ein Minigame und brauche bisschen Hilfe!
Und zwar muss ich eine Region zwischen 2 Koordinaten auslesen und prüfen mit einer Schleife ob der Spieler in der ist!

Hier mein Ansatz denke aber nicht ob das funktioniert!

problem 1.png

Also wäre cool wenn mit jemand helfen kann!

PS: Bitte nicht schreiben ja du du hast den Absatz auskommentiert!
 

Lapura

Kuhfänger
Registriert
28 Dezember 2014
Beiträge
73
Alter
26
Diamanten
314
Hey,
ich seh nur so viel, das du das auch mit einer World Guard API machen kannst...
Sonst kann ich dir nicht weiter helfen, dafür reicht mein Programmier wissen nicht aus.
Aber schauen mal nach der World Edit API wenn du 2 feste punkte hast.
LG, Lukas
 

Inkemann

Braumeister
Registriert
3 Mai 2015
Beiträge
339
Diamanten
301
Minecraft
Inkemann
Wieso prüfst du nur X und Y? Y ist die Höhe. Ansonsten ist dein Ansatz gar nicht mal so schlecht.

Ich würde es allerding so machen:

Code:
public boolean inArena(Location corner1, Location corner2, Player player) {
  Location pLoc = player.getLocation();
  return ((corner1.getX() > corner2.getX() ? pLoc.getX() <= corner1.getX() && pLoc.getX() >= corner2.getX() : pLoc.getX() <= corner2.getX() && pLoc.getX() >= corner1.getX()) &&
  (corner1.getY() > corner2.getY() ? pLoc.getY() <= corner1.getY() && pLoc.getY() >= corner2.getY() : pLoc.getY() <= corner2.getY() && pLoc.getY() >= corner1.getY()) &&
  (corner1.getZ() > corner2.getZ() ? pLoc.getZ() <= corner1.getZ() && pLoc.getZ() >= corner2.getZ() : pLoc.getZ() <= corner2.getZ() && pLoc.getZ() >= corner1.getZ()));
}

Dabei wird mit dem trinären ?-Operator immer erst geprüft, welche Wert von den beiden Ecken kleiner ist.

Die Ausgaben und so würde ich dann in einer anderen Methode machen.
 

Yannici

Minecrafter
Registriert
20 Mai 2015
Beiträge
26
Diamanten
0
Minecraft
Yannici
Etwas längere, aber übersichtlichere Variante wäre:
Code:
public boolean isInRegion(Location corner1, Location corner2, Player player) {
        Location loc = player.getLocation();
        Location min = new Location(corner1.getWorld(),
                Math.min(corner1.getX(), corner2.getX()),
                Math.min(corner1.getY(), corner2.getY()),
                Math.min(corner1.getZ(), corner2.getZ()));
        Location max = new Location(corner2.getWorld(),
                Math.max(corner1.getX(), corner2.getX()),
                Math.max(corner1.getY(), corner2.getY()),
                Math.max(corner1.getZ(), corner2.getZ()));
       
        return (loc.getX() >= min.getX() && loc.getX() <= max.getX() &&
                loc.getY() >= min.getY() && loc.getY() <= max.getY() &&
                loc.getZ() >= min.getZ() && loc.getZ() <= max.getZ());
    }
 
Oben