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

Problem mit isOnline()

ThrustLP

Redstoneengineer
Registriert
3 April 2013
Beiträge
35
Diamanten
0
Hallo! Ich habe hier einen simplen code:

Code:
if(cmd.getName().equalsIgnoreCase("test")){
Player check = Bukkit.getServer().getPlayer(ThrustLP);
if(check.isOnline()){

p.sendMessage(check + " On");
//FUNKTIONIERT
}else{

p.sendMessage(check + " Off");
//ERROR


}



}

Was muss ich tun um auch die "Off" Message zu bekommen? Danke!
 

ThrustLP

Redstoneengineer
Registriert
3 April 2013
Beiträge
35
Diamanten
0
Ja:

Code:
[20:31:55 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'test
' in plugin Simple v0.1
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[cb.
jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:19
6) ~[cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServe
r.java:542) ~[cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerCon
nection.java:932) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java
:814) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java
:28) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat
.java:47) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146
) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [cb.j
ar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
55) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
50) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
45) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
:457) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
17) [cb.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
Caused by: java.lang.NullPointerException
        at me.thrustlp.test.Main.onCommand(Main.java:16) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[cb.
jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
        ... 13 more
>
 

Spartaner

Minecrafter
Gesperrt
Registriert
10 Oktober 2012
Beiträge
7
Diamanten
0
Minecraft
Spartaner_v1
Hi,
ich persönlich benutzt nicht diese Variante sondern vergleiche einfach mit null.
Code:
Player target = Bukkit.getPlayerExact(/*playername*/);
if(target == null) {
         sender.sendMessage(/*nicht Online*/);
} else {}

Bisher hat dieser Code immer bei mir funktioniert.

("null" bleibt null, und kann auch keinen boolean zurückgeben)

Mit freundlichen Grüßen
Spartaner
 
Zuletzt bearbeitet:

ThunderFlo

Kuhfänger
Registriert
22 September 2013
Beiträge
53
Diamanten
0
Hallo! Ich habe hier einen simplen code:

Code:
if(cmd.getName().equalsIgnoreCase("test")){
Player check = Bukkit.getServer().getPlayer(ThrustLP);
if(check.isOnline()){

p.sendMessage(check + " On");
//FUNKTIONIERT
}else{

p.sendMessage(check + " Off");
//ERROR


}



}

Was muss ich tun um auch die "Off" Message zu bekommen? Danke!


Ich verstehe denn Sinn deines Codes leider nicht. Wie wäre es wenn du das nicht so machst?

if (cmd.getName().equalsIgnoreCase("check") {
if (cs.hasPermissions("Deine.Permission") {
if (args.length == 1) {
Player t = Bukkit.getPlayer(args[0]);
if (t != null) {
cs.sendMessage("Der Spieler " + args[0] + " ist momentan auf dem Server"));
} else {
cs.sendMessage("Der Spieler " + args[0] + " ist momentan leider nicht auf dem Server"));
}
}
} else {
cs.sendMessage("Du hast keine Erlaubnis dieses Kommando auszuführen!")
}

Das hab ich hier nun aus dem Kopf geschrieben es kann sein das ich nen paar klammern etc. vergessen habe aber so sollte es denke ich funktionieren und du müsstest verstanden haben wie es funktioniert :)
 

Benutzer

Kuhfänger
Registriert
1 November 2012
Beiträge
56
Diamanten
0
Hallo! Ich habe hier einen simplen code:

Code:
if(cmd.getName().equalsIgnoreCase("test")){
Player check = Bukkit.getServer().getPlayer(ThrustLP);
if(check.isOnline()){

p.sendMessage(check + " On");
//FUNKTIONIERT
}else{

p.sendMessage(check + " Off");
//ERROR

}



}

Was muss ich tun um auch die "Off" Message zu bekommen? Danke!


Du musst doch hierbei den Namen des Spielers also ThrustLP in "" setzen. Oder lieg ich da falsch ?

MFG Benutzer
 
B

Blindhero

Guest
wenn der Spieler nicht online ist, wird wohl check = null sein. ich würde dann stattdessen sagen: p.sendMessage(args[0] + " off);
oder..
OfflinePlayer op = getServer().getOfflinePLayer(args[0]);
p.sendMessage(op.getName() + " off);
 

delta242

Kuhfänger
Registriert
28 Mai 2012
Beiträge
90
Diamanten
0
Genau, Bukkit gibt bei Bukkit#getPlayer(...) oder bei Bukkit#getPlayerExact(...) null zurück, falls der Spieler nicht online ist. Das bedeutet, falls dein gesuchter Spieler nicht online ist, versucht er die Methode isOnline() aufzurufen, obwohl das dazugehörige Objekt null ist, was wiederum zur NullPointerException führt.Also immer einen Null-Check durchführen.
 
Oben