• 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

Yellowphoenix18

Vorarbeiter
Registriert
26 März 2013
Beiträge
287
Alter
26
Diamanten
300
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
 
X

|| xX [DEV][LP] Ms. DivaCraft Xx ||

Guest
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.
 

Yellowphoenix18

Vorarbeiter
Registriert
26 März 2013
Beiträge
287
Alter
26
Diamanten
300
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);

}
 

combo

Miner
Registriert
16 Juli 2012
Beiträge
175
Diamanten
0
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:
Player[] all = Bukkit.getOnlinePlayers();
for(int i = 0; i < Bukkit.getOnlinePlayers().length(); i++) {
if(all[i].isOnGround) {
//tue was
}

Und wo zeigt den Eclipse den Fehler an?
 

MiCrJonas

Threadripper
Registriert
29 Oktober 2012
Beiträge
1.064
Diamanten
0
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.
 
Oben