• 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 /ci (/clearinventory)

Status
Für weitere Antworten geschlossen.

Assassins88

Minecrafter
Registriert
21 August 2011
Beiträge
3
Diamanten
0
Heyho,

ich hab ein Problem mit meinem Code für einen /clearinventory Befehl.

Rein weg von der Logik her, sollte er funktionieren aber das tut er nicht und ich kann den Fehler nicht finden. Vllt könnt ihr mir helfen.

Code:
        if(cmd.getName().equalsIgnoreCase("clearinventory")){
            Player tP = getServer().getPlayerExact(args[0]);
            if(p.hasPermission("cce.ci.other")){
                if(args.length == 1){
                    if(tP.isOnline()){
                        tP.getInventory().clear();
                        tP.sendMessage(ChatColor.GOLD + name + ChatColor.GREEN + " Dein Inventar wurde von " + ChatColor.DARK_RED + p.getDisplayName() + ChatColor.GREEN + " gelöscht.");
                        return true;
                    } else {
                        p.sendMessage(ChatColor.GOLD + name + ChatColor.RED + "Der Spieler " + ChatColor.GOLD + tP.getDisplayName() + ChatColor.RED + " ist nicht online!");
                    }
                } else {
                    if(p.hasPermission("cce.ci.other")){
                        if(args.length == 0){
                            p.getInventory().clear();
                            p.sendMessage(ChatColor.GOLD + name + ChatColor.GREEN + " Dein Inventar wurde gelöscht.");
                        }
                    } else {
                        p.sendMessage(ChatColor.GOLD + name + ChatColor.RED + " Dir fehlen die Rechte wür diesen Befehl!");
                    }
                }
            } else {
                p.sendMessage(ChatColor.GOLD + name + ChatColor.RED + " Dir fehlen die Rechte wür diesen Befehl!");
            }
        }

Fehler vom Server:

Code:
[12:01:36] [Server thread/INFO]: Assassins88 issued server command: /ci
[12:01:36] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'ci' in plugin CCEssentials v1.0 alpha
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) ~[bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at org.bukkit.craftbukkit.v1_7_R4.CraftServer.dispatchCommand(CraftServer.java:740) ~[bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.PlayerConnection.handleCommand(PlayerConnection.java:957) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:818) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.PacketPlayInChat.a(PacketPlayInChat.java:28) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.PacketPlayInChat.handle(PacketPlayInChat.java:47) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:157) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.ServerConnection.c(SourceFile:134) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:667) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
Caused by: java.lang.ArrayIndexOutOfBound***ception: 0
    at de.cc.assassins88.CCEssentials.CCEssentials.onCommand(CCEssentials.java:359) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[bukkit.jar:git-Bukkit-1.7.9-R0.2-20-g0b2ed13-b3108jnks]
    ... 13 more

Wenn ich den Befehl /ci <player> eingebe und der Spieler online ist funktioniert er. Bei /ci oder dem Fall, dass der Spieler nicht online ist kommt der Fehler.

Was ist falsch?

greez Assassins88
 

SilberRegen

Workaholic
Registriert
23 März 2012
Beiträge
889
Alter
35
Diamanten
303
Minecraft
SilberRegen
Ich habe keine Ahnung von programmieren, aber mein Developer hat mir mal irgendwann nebenbei erklärt, dass der Zugriff auf Inventare von Offlinespielern nicht geht (oder nur schlecht und er war zu faul das zu machen, wer weiß :p).
Die Plugins, die bei uns mit Spielerinventaren rumhantieren, funktionieren auf jeden Fall alle nur mit Onlineplayern.
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Bevor du das machst:
Code:
Player tP = getServer().getPlayerExact(args[0]);

solltest du erstmal abfragen ob diese Argumente existieren.
Der fehler ist nämlich das etwas null ist. und genau daran könnte es liegen
 

pasce1998

Minecrafter
Registriert
20 April 2014
Beiträge
21
Diamanten
300
Minecraft
pasce1998
Bevor du aus dem ersten Argument einen Spieler machst musst du abfragen, ob es das Argument überhaupt gibt.
Fakt ist: Du fragst zwar ab, ob die Argumentenlänge 1 ist, benutzt das erste Argument aber schon vor der Abfrage => Es wird ein Fehler geworfen.
Du musst lediglich die Methode, den Spieler zu bekommem, nach der Abfrage von der Argumentenlänge aufrufen.

P.S. Du hast da einen Fehler in deinen Ausgabetexten: Es heißt "für" und nicht "wür".
 
Status
Für weitere Antworten geschlossen.
Oben