ServerPlugin Eine bestimmte Art von Blöcken in einem festgelegtem Bereich auswählen.

Dieses Thema im Forum "Programmierung" wurde erstellt von Verschraubt, 13. August 2015.

  1. Verschraubt
    Online

    Verschraubt

    Guten Abend,
    ich wollte in einem Plugin folgendes erzielen: für einen Disco-Effekt sollten sich obsidian Blöcke in einer festgelegten Zone durch eine scheduler in regelmäßigen Abständen zu einem glowstone Block verändern. Meine Frage ist jetzt, wie ich obsidian Blöcke in einem Bereich auswählen kann.
    Ich wäre über eine hilfreiche Antwort sehr dankbar.
    Mit freundlichen Grüßen,
    DasThema
     
    #1
  2. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    1. Playerinteractevent
    2. den Spieler 2 Blöcke anklicken lassen
    3. Alle Blöcke in diesen checken lassen ob sie Obsidian sind.
    4. wenn ja in eine Liste einfügen
    5. die Blöcke aus der Liste im gewünschten Zeitabstand ändern.
     
    #2
  3. Verschraubt
    Online

    Verschraubt

    Also wenn ich das jetzt richtig verstehe, muss ich jeden Block einzeln eintragen oder einen Bereich berechnen lassen.
    Wenn ich 2 Blöcke markiere, wie kann ich dann die Blöcke dazwischen auswählen?
     
    #3
  4. GPSforLEGENDS
    Offline

    GPSforLEGENDS

    Registriert seit:
    21. März 2014
    Beiträge:
    295
    Ort:
    Bürostuhl
    Minecraft:
    GPSforLEGENDS
    Du hast 2 Locations
    Machst 3 Schleifen for(int i = loc1.getBlockX(); i < loc2.getBlockX; i++){
    for(int i2 = loc1.getBlockY(); i < loc2.getBlockY; i2++){
    for(int i3 = loc1.getBlockZ(); i < loc2.getBlockZ; i3++){
    dann den Block an i, i2, i3 überprüfen und in einer Liste abspeichern.
     
    #4
  5. Verschraubt
    Online

    Verschraubt

    Okay. Habe das mal so probiert. Funktioniert aber leider nicht. Was habe ich falsch gemacht?
    Code (Text):
    1. public static boolean inField(Location loc1, Location loc2, Location playerlocation) {
    2.         ArrayList<Location> bloc = new ArrayList<>();
    3.  
    4.         boolean wert = true;
    5.  
    6.         for (int i1 = loc1.getBlockX(); i1 < loc2.getBlockX(); i1++) {
    7.             for (int i2 = loc1.getBlockY(); i2 < loc2.getBlockY(); i2++) {
    8.                 for (int i3 = loc1.getBlockZ(); i3 < loc2.getZ(); i3++) {
    9.                     Location xy = new Location(playerlocation.getWorld(), i1, i2, i3);
    10.                     bloc.add(xy);
    11.                 }
    12.             }
    13.         }
    14.         for (Location loc : bloc) {
    15.             if (playerlocation == loc) {
    16.                 wert = true;
    17.             } else {
    18.                 wert = false;
    19.             }
    20.  
    21.         }
    22.  
    23.         return wert;
    24.  
    25.     }
     
    #5
  6. Kronos197
    Offline

    Kronos197

    Registriert seit:
    20. Dezember 2013
    Beiträge:
    153
    Ort:
    Frankfurt
    Minecraft:
    Kronos197
    schon mal daran gedacht das koordinaten von loc 1 höher sind als von loc 2? Das könnte eine fehlerquelle sein....
     
    #6