ServerPlugin Hilfe bei 1.8 Plugin

Dieses Thema im Forum "Programmierung" wurde erstellt von maxi1498, 25. Mai 2015.

  1. maxi1498
    Offline

    maxi1498

    Registriert seit:
    19. Februar 2015
    Beiträge:
    145
    Ort:
    Bayern
    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!
     
    #1
  2. Lapura
    Offline

    Lapura

    Registriert seit:
    28. Dezember 2014
    Beiträge:
    59
    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
     
    #2
  3. maxi1498
    Offline

    maxi1498

    Registriert seit:
    19. Februar 2015
    Beiträge:
    145
    Ort:
    Bayern
    Minecraft:
    maxi1498
    Naja das ist so ne Sache es sind nicht 2 feste punkte sondern pro Arena halt 2 feste also immer 2 unterschiedliche!
     
    #3
  4. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    341
    Ort:
    Aachen
    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 (Text):
    1. public boolean inArena(Location corner1, Location corner2, Player player) {
    2.   Location pLoc = player.getLocation();
    3.   return ((corner1.getX() > corner2.getX() ? pLoc.getX() <= corner1.getX() && pLoc.getX() >= corner2.getX() : pLoc.getX() <= corner2.getX() && pLoc.getX() >= corner1.getX()) &&
    4.   (corner1.getY() > corner2.getY() ? pLoc.getY() <= corner1.getY() && pLoc.getY() >= corner2.getY() : pLoc.getY() <= corner2.getY() && pLoc.getY() >= corner1.getY()) &&
    5.   (corner1.getZ() > corner2.getZ() ? pLoc.getZ() <= corner1.getZ() && pLoc.getZ() >= corner2.getZ() : pLoc.getZ() <= corner2.getZ() && pLoc.getZ() >= corner1.getZ()));
    6. }
    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.
     
    #4
  5. Yannici
    Offline

    Yannici

    Registriert seit:
    20. Mai 2015
    Beiträge:
    26
    Minecraft:
    Yannici
    Etwas längere, aber übersichtlichere Variante wäre:
    Code (Text):
    1. public boolean isInRegion(Location corner1, Location corner2, Player player) {
    2.         Location loc = player.getLocation();
    3.         Location min = new Location(corner1.getWorld(),
    4.                 Math.min(corner1.getX(), corner2.getX()),
    5.                 Math.min(corner1.getY(), corner2.getY()),
    6.                 Math.min(corner1.getZ(), corner2.getZ()));
    7.         Location max = new Location(corner2.getWorld(),
    8.                 Math.max(corner1.getX(), corner2.getX()),
    9.                 Math.max(corner1.getY(), corner2.getY()),
    10.                 Math.max(corner1.getZ(), corner2.getZ()));
    11.        
    12.         return (loc.getX() >= min.getX() && loc.getX() <= max.getX() &&
    13.                 loc.getY() >= min.getY() && loc.getY() <= max.getY() &&
    14.                 loc.getZ() >= min.getZ() && loc.getZ() <= max.getZ());
    15.     }
     
    #5
    LoganBwDE gefällt das.
  6. Inkemann
    Offline

    Inkemann

    Registriert seit:
    3. Mai 2015
    Beiträge:
    341
    Ort:
    Aachen
    Minecraft:
    Inkemann
    Ja, das geht auch. Wenn man trinäre Operatoren nicht gewohnt ist, ist es wahrscheinlich auch bedeutend einfacher zu durchschauen :D Code-readability war noch nie meine Stärke.
     
    #6