[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:
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
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
... 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
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
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)
riga 44?? ................... 15 caratteri asd
19/02/2014, 19:59gamerover98 ha scritto: riga 44?? ................... 15 caratteri asd

Nel TUO codice cosa c'è alla riga 44 ? Se ci postassi l'intera classe sarebbe tutto più facile......
"È 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)
ok la posto, eccotela:

Codice:
package me.gamerover98;

import java.util.logging.Logger;

import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class EnderCrystalMain extends JavaPlugin
{
  private Listener Listener = new other();
  public static EnderCrystalMain plugin;
  public final Logger logger = Logger.getLogger("Minecraft");

  public void onEnable()
  {
    PluginDescriptionFile pdffile = getDescription();

    this.logger.info(pdffile.getName() + " Version " + pdffile.getVersion() + " Has been Enabled!");
    PluginManager pm = getServer().getPluginManager();
    pm.registerEvents(this.Listener, this);
  }

  public void onDisable() {
    PluginDescriptionFile pdffile = getDescription();
    this.logger.info(pdffile.getName() + " Version "  + pdffile.getVersion() + " Has been Disabled!");
  }

  public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    Player player = (Player)sender;
 if (args[0].length() == 0) {    
    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;
  }
}
Si ma l'errore D: senza la stacktrace non capisco! comunque è sbagliato if(args[0].length == 0) , dovrebbe essere args.length. Ma perché devi controllare se ci sono argomenti?
[Immagine: filoghost] filoghost
 
su eclipse non da nessun errore! ma nel gioco si
Discussioni simili
Risposta di Sk3py
03/12/2018, 23:39
Risposta di fabiomailtrash
03/12/2018, 07:26
Risposta di xTryer_
27/11/2018, 17:30
Risposta di IRROS
27/11/2018, 15:42
Risposta di Cubey
19/11/2018, 16:38

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