[Problema] nell programmare il mio plugin

ciao a tutti, come ben sapete ho postato il mio plugin su bukkit (EnderCrystalSpawner Tool) ma ho un piccolo problema.

Codice:
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    Player player = (Player)sender;
    
    if ((commandLabel.equalsIgnoreCase("ec")) && 
         (player.hasPermission("ec.normal"))) {
         @SuppressWarnings("deprecation")
          Location location = player.getTargetBlock(null, 20).getLocation().add(0.0D, 1.0D, 0.0D);
         Location location1 = location.clone().add(0.0D, 1.0D, 0.0D);
         @SuppressWarnings("deprecation")
Location location2 = player.getTargetBlock(null, 20).getLocation().add(0.5D, 1.0D, 0.5D);

         if ((location.getBlock().isEmpty()) && (location1.getBlock().isEmpty()))
         {
           location2.getWorld().spawnEntity(location2, EntityType.ENDER_CRYSTAL);
           sender.sendMessage(ChatColor.GREEN + "Ender Crystal Spawned!");
         }

    }

    
     if (args[0].equalsIgnoreCase("bedrock")) {
     
      @SuppressWarnings("deprecation")
Location location = player.getTargetBlock(null, 20).getLocation().add(0.0D, 1.0D, 0.0D);
      Location location1 = location.clone().add(0.0D, 1.0D, 0.0D);

      if ((location.getBlock().isEmpty()) && (location1.getBlock().isEmpty()))
      {
        location.getBlock().setType(Material.BEDROCK);
        location1.getBlock().setType(Material.FIRE);
      }
      sender.sendMessage(ChatColor.GREEN + "Ender Crystal Spawned! " + ChatColor.RED + " + " + ChatColor.BLACK + " BedRock! ");
    }
     return true;
  }
}

Come potete vedere, la stringa si basa sullo spawnare del cristallo. Il primo args dice che se io scrivo in chat /ec mi compare davanti il cristallo. invece se faccio /ec bedrock mi comparirà un cristallo cn la bedrock. fin qui niente di male ma, quando entro in gioco e faccio /ec mi spawna il cristallo, mi dice il messaggio (Ender Crystal Spawned!) ma poi sotto mi da un errore cioè quello di guardare la console. se faccio /ec bedrock e non da nessun errore.

sapete rispondermi? forse sbaglio a mettere il return? manca qualcosa? raga per favore mi serve subito! D:
[Immagine: just_cause_3_sfondo_1.jpg]
Devi inserire anche il caso in cui il primo args è nullo.
"È come se ci fossimo dimenticati chi siamo, Donald: esploratori, pionieri. Non dei guardiani."

"Un tempo per la meraviglia alzavamo al cielo lo sguardo sentendoci parte del firmamento, ora invece lo abbassiamo preoccupati di far parte del mare di fango."

- Cooper (Interstellar)
hem cosa ci metto? XD
[Immagine: just_cause_3_sfondo_1.jpg]
Non sono sicuro che sia questo l'errore, ma correggerlo non farà male. 

Prova a mettere un if prima del primo "caso" (quindi quando non devi metterci la bedrock, con condizione (args[0] == null) o (args[0].length == 0) e gli fai eseguire il comando.
"È come se ci fossimo dimenticati chi siamo, Donald: esploratori, pionieri. Non dei guardiani."

"Un tempo per la meraviglia alzavamo al cielo lo sguardo sentendoci parte del firmamento, ora invece lo abbassiamo preoccupati di far parte del mare di fango."

- Cooper (Interstellar)
potresti gentilmente scrivermi il code completo? grazie :3
[Immagine: just_cause_3_sfondo_1.jpg]
... come vuoi... ma così non impari molto... (e non ti assicuro che funzioni, non avendolo provato). Come hai fatto tu non importa che comando fai, importa solo l'argomento:

Codice:
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    Player player = (Player)sender;
    
    if ((commandLabel.equalsIgnoreCase("ec")) && 
         (player.hasPermission("ec.normal"))) {
 if (args[0].length == 0) {
         @SuppressWarnings("deprecation")
          Location location = player.getTargetBlock(null, 20).getLocation().add(0.0D, 1.0D, 0.0D);
         Location location1 = location.clone().add(0.0D, 1.0D, 0.0D);
         @SuppressWarnings("deprecation")
Location location2 = player.getTargetBlock(null, 20).getLocation().add(0.5D, 1.0D, 0.5D);

         if ((location.getBlock().isEmpty()) && (location1.getBlock().isEmpty()))
         {
           location2.getWorld().spawnEntity(location2, EntityType.ENDER_CRYSTAL);
           sender.sendMessage(ChatColor.GREEN + "Ender Crystal Spawned!");
         }
 }
    
     if (args[0].equalsIgnoreCase("bedrock")) {
     
      @SuppressWarnings("deprecation")
Location location = player.getTargetBlock(null, 20).getLocation().add(0.0D, 1.0D, 0.0D);
      Location location1 = location.clone().add(0.0D, 1.0D, 0.0D);

      if ((location.getBlock().isEmpty()) && (location1.getBlock().isEmpty()))
      {
        location.getBlock().setType(Material.BEDROCK);
        location1.getBlock().setType(Material.FIRE);
      }
      sender.sendMessage(ChatColor.GREEN + "Ender Crystal Spawned! " + ChatColor.RED + " + " + ChatColor.BLACK + " BedRock! ");
    }

}
     return true;
  }
"È come se ci fossimo dimenticati chi siamo, Donald: esploratori, pionieri. Non dei guardiani."

"Un tempo per la meraviglia alzavamo al cielo lo sguardo sentendoci parte del firmamento, ora invece lo abbassiamo preoccupati di far parte del mare di fango."

- Cooper (Interstellar)
no mi da errore
[Immagine: just_cause_3_sfondo_1.jpg]
Che errore? Asd
[Immagine: filoghost] filoghost
 
an internal error occured... 

Codice:
19:33:49 [INFO] gamerover98 issued server command: /ec
19:33:49 [SEVERE] null
19:33:49 org.bukkit.command.CommandException: Unhandled exception executing command 'ec' in plugin EnderCristalSpawner v1.0.0
19:33:49  at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Spigot-1287]
19:33:49  at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:199) ~[craftbukkit.jar:git-Spigot-1287]
19:33:49  at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:548) ~[craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:962) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:817) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:65) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:147) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.ServerConnection.c(ServerConnection.java:77) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:698) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:273) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:560) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:467) [craftbukkit.jar:git-Spigot-1287]
19:33:49  at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Spigot-1287]
19:33:49 Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
19:33:49  at me.gamerover98.EnderCrystalMain.onCommand(EnderCrystalMain.java:39) ~[?:?]
19:33:49  at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit.jar:git-Spigot-1287]
19:33:49  ... 13 more
[Immagine: just_cause_3_sfondo_1.jpg]
Cosa c'è alla riga 44 ?
"È come se ci fossimo dimenticati chi siamo, Donald: esploratori, pionieri. Non dei guardiani."

"Un tempo per la meraviglia alzavamo al cielo lo sguardo sentendoci parte del firmamento, ora invece lo abbassiamo preoccupati di far parte del mare di fango."

- Cooper (Interstellar)
Discussioni simili
Risposta di BlueDanger
ieri, 14:24
Risposta di GABRYCA
ieri, 11:37
Risposta di GABRYCA
22/06/2018, 14:14
Risposta di iAmGio
21/06/2018, 22:41
Risposta di Wimowa
14/06/2018, 13:20

Utente(i) che stanno guardando questa discussione: 1 Ospite(i)