1. 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!

Höhe eines Spielers bekommen

Dieses Thema im Forum "Programmierung" wurde erstellt von Yellowphoenix18, 12. Oktober 2014.


  1. Yellowphoenix18
    Offline

    Yellowphoenix18

    Registriert seit:
    26. März 2013
    Beiträge:
    270
    Geschlecht:
    männlich
    Minecraft:
    YellowPhoenix18
    Hallo,ich suche heute nach einem CodeSchnipsel um zu gucken,wie viele Blöcke ein Spieler über dem Boden schwebt/fliegt.
    Ich freue mich auf eure Antworten.

    mfg YellowPhoenix18
     
  2. Werbung
    Online

    Werbung

  3. man nehme die Höhe des spielers, minus den höchsten Block. Ziemlich simple:

    player.getLocation().getY() - World.getHighestBlockAt(int x, int z);

    Bei World.getHighestBlockAt(int x, int z) solltest du nur vorher überprüfen, ob der Chunk geladen ist.
     
  4. Yellowphoenix18
    Offline

    Yellowphoenix18

    Registriert seit:
    26. März 2013
    Beiträge:
    270
    Geschlecht:
    männlich
    Minecraft:
    YellowPhoenix18
    Ich habe das ganze mal eingebunden,doch leider meldet Eclipse Fehler:

    public void FlyCheck() {

    this.CheckTask = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {

    @Override
    public void run() {
    CheckTime --;

    if(CheckTime == 0) {
    for(Player all : Bukkit.getOnlinePlayers()) {
    if(!all.isOnGround()) {


    double x = all.getLocation().getX();
    double z = all.getLocation().getZ();

    if((all.getLocation().getY() - Bukkit.getWorld("world").getHighestBlockYAt(x, z)) >= 2) {
    if(!all.hasPermission("balandrianum.fly")) {
    if(flyer.contains(all)) {
    flyer.remove(all);
    try {
    Warns.setWarns(all.getUniqueId().toString(), Warns.getWarns(all.getUniqueId().toString()) + 2);
    } catch (SQLException e1) {
    e1.printStackTrace();
    }
    all.kickPlayer(name + "Du hast nun zwei Warn-Punkte erhalten!");
    } else {
    flyer.add(all);
    all.sendMessage(name + "Du wurdest detected,höre auf zu fliegen!");
    }
    }
    }
    } else {
    flyer.remove(all);
    }
    }
    CheckTime = 5;
    }

    }

    }, 20, 15);

    }
     
  5. combo
    Offline

    combo

    Registriert seit:
    16. Juli 2012
    Beiträge:
    173
    Geschlecht:
    männlich
    Minecraft:
    combo5
    Hallo,
    mit for(Player p : Bukkit.getOnlinePlayers()) { } fragst du ALLE Spieler die Online sind ab und nicht jeden einzeln sondern alle gleichzeitig.
    mit dem if(!(all.isOnGround)) fragst du ebend ob alle Spieler in der Luft sind gleichzeitig.
    Probiere mal:
    Code (Text):
    1.  
    2. Player[] all = Bukkit.getOnlinePlayers();
    3. for(int i = 0; i < Bukkit.getOnlinePlayers().length(); i++) {
    4. if(all[i].isOnGround) {
    5. //tue was
    6. }
    7.  
    Und wo zeigt den Eclipse den Fehler an?
     
  6. Yellowphoenix18
    Offline

    Yellowphoenix18

    Registriert seit:
    26. März 2013
    Beiträge:
    270
    Geschlecht:
    männlich
    Minecraft:
    YellowPhoenix18
    Eclipse zeigt den Fehler bie "getHighestBlockYAt"
     
  7. combo
    Offline

    combo

    Registriert seit:
    16. Juli 2012
    Beiträge:
    173
    Geschlecht:
    männlich
    Minecraft:
    combo5
    Was gibts sie dir als Fehler meldung?
     
  8. Yellowphoenix18
    Offline

    Yellowphoenix18

    Registriert seit:
    26. März 2013
    Beiträge:
    270
    Geschlecht:
    männlich
    Minecraft:
    YellowPhoenix18
    Er bietet mir an Change to getHighestBlockAT(funktioniert aber auch nicht) und Rename in file
     
  9. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.064
    Geschlecht:
    männlich
    GetHighestBlockAt gibt einen Block zurück. Deshalb musst du, um zu schauen, ob der Abstand größer als 2 ist, die Höhe des Blocks vergleihen. Block#getLocation ().getY ().
    Wenn der Spieler noch Blöcke über sich hat, ergibt das ganze aber keinen Sinn, da der Abstand zum Block unter dem Spieler dann negativ und falsch ist.