Elrontur (Und die anderen Plugins :D) - Brauch wieder Hilfe!

Dieses Thema im Forum "Programmierung" wurde erstellt von Elronturalt, 23. August 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Elronturalt
    Offline

    Elronturalt Gesperrt

    Registriert seit:
    3. Juli 2012
    Beiträge:
    62
    Hallo alle!
    Ich brauch echt mal Hilfe... :S
    Mir fehlt ein Befehl vom Plugin, was diesen Error nicht ausgibt:
    Code (Text):
    1. 2012-08-23 11:34:53 [SEVERE] null
    2. org.bukkit.command.CommandException: Unhandled exception executing command 'tome' in plugin Elrontur v2.0
    3.     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42)
    4.     at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:168)
    5.     at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:492)
    6.     at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:878)
    7.     at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:825)
    8.     at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:807)
    9.     at net.minecraft.server.Packet3Chat.handle(Packet3Chat.java:44)
    10.     at net.minecraft.server.NetworkManager.b(NetworkManager.java:276)
    11.     at net.minecraft.server.NetServerHandler.d(NetServerHandler.java:109)
    12.     at net.minecraft.server.ServerConnection.b(SourceFile:35)
    13.     at net.minecraft.server.DedicatedServerConnection.b(SourceFile:30)
    14.     at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:581)
    15.     at net.minecraft.server.DedicatedServer.q(DedicatedServer.java:212)
    16.     at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:474)
    17.     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:406)
    18.     at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
    19. Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    20.     at me.Elrontur.Elrontur.Elrontur.onCommand(Elrontur.java:188)
    21.     at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40)
    22.     ... 15 more
    Dieser Befehl ist so geschreiben:
    Code (Text):
    1. if (cmd.getName().equalsIgnoreCase("tome") && p.hasPermission("elrontur.to.me")) {
    2.             Player t = (Player) this.getServer().getPlayer(args[0]);
    3.                 if(args.length == 1) {
    4.                     try {
    5.                         p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Informiere Spieler " + ChatColor.GREEN + t.getName() + ChatColor.BLUE + " über Teleportation!");
    6.                         p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Lokalisiere eigene Spieler-Position...");
    7.                         t.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Teleportation zu " + ChatColor.GREEN + p.getName() + ChatColor.BLUE + " wird lokalisiert.");
    8.                        
    9.                         Location location = p.getLocation();
    10.                        
    11.                         int posX = location.getBlockX();
    12.                         int posY = location.getBlockY();
    13.                         int posZ = location.getBlockZ();
    14.                        
    15.                         p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Starte Teleportation zu " + ChatColor.GREEN + t.getName() + ChatColor.BLUE + ".");
    16.                        
    17.                         t.getLocation().setX(posX);
    18.                         t.getLocation().setY(posY);
    19.                         t.getLocation().setZ(posZ);
    20.                        
    21.                         p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Teleportation erfolgreich abgeschlossen!");
    22.                         t.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Teleportation erfolgreich abgeschlossen!");
    23.                        
    24.                         return true;
    25.                     }
    26.                     catch(NullPointerException np) {
    27.                         p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Der Spieler " + ChatColor.GREEN + args[0] + ChatColor.BLUE + " ist nicht online - Lokalisierung abgebrochen!");
    28.                     }
    29.                 }
    30.         }
    Das möchte ich, wie auch z.B. hier wegkriegen:
    Code (Text):
    1. if (cmd.getName().equalsIgnoreCase("hug") && p.hasPermission("elrontur.hug")) {
    2.                 Player t = (Player) this.getServer().getPlayer(args[0]);
    3.                     if(args.length == 0) {
    4.                         p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Gib einen Spieler an!");
    5.                         return true;
    6.                     }
    7.             if(args.length == 1) {
    8.                 try {
    9.                 p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Du hast " + ChatColor.GREEN + t.getName() + ChatColor.BLUE + " umarmt! :)");
    10.                 t.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.GREEN + p.getName() + ChatColor.BLUE + " hat dich umarmt! :)");
    11.                 return true;
    12.                 }
    13.                 catch(NullPointerException np) {
    14.                     p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Der Spieler " + ChatColor.GREEN + args[0] + ChatColor.BLUE + " ist nicht online!");
    15.                     }
    16.                 }
    17.             }
    Das Problem dabei ist, dass dieser Befehl nicht auf args.length == 0 hört, sondern ein ArrayIndexOutOfBoundsExeption: 0 ausgibt!
    Im Client wirft er mir im Chat dies vor:
    An internal error occured while attempting to perform this command

    Wenn mir jemand helfen könnte, wäre ich sehr dankbar! :)
     
    #1
  2. Cabraca
    Offline

    Cabraca

    Code (Text):
    1. Player t = (Player) this.getServer().getPlayer(args[0]);
    Sicher, dass argumente übergeben wurden? (args[0] also existiert?
     
    #2
  3. Elronturalt
    Offline

    Elronturalt Gesperrt

    Registriert seit:
    3. Juli 2012
    Beiträge:
    62
    Also args[0] geht, ja, nur wenn ich das nicht angebe, bringt der mir den Mist... :(

    ~~~~
    EDIT da Doppel

    Naja, also so gesehen, wenn man es nicht falsch eigibt, macht es keinen Ärger. ^^
    Wenn jemand doch eine Idee hat, kann er diese ja preisgeben.
     
    #3
  4. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    Probier mal ob das so klappt:

    Code (Text):
    1.  
    2.         if (cmd.getName().equalsIgnoreCase("tome") && p.hasPermission("elrontur.to.me")) {
    3.             if (args.length > 0 && this.getServer().getPlayer(args[0]) != null) {
    4.                 Player t = this.getServer().getPlayer(args[0]);
    5.                 if (args.length == 1) {
    6.                     p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Informiere Spieler " + ChatColor.GREEN + t.getName() + ChatColor.BLUE + " über Teleportation!");
    7.                     p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Lokalisiere eigene Spieler-Position...");
    8.                     t.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Teleportation zu " + ChatColor.GREEN + p.getName() + ChatColor.BLUE + " wird lokalisiert.");
    9.  
    10.                     Location location = p.getLocation();
    11.  
    12.                     int posX = location.getBlockX();
    13.                     int posY = location.getBlockY();
    14.                     int posZ = location.getBlockZ();
    15.  
    16.                     p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Starte Teleportation zu " + ChatColor.GREEN + t.getName() + ChatColor.BLUE + ".");
    17.  
    18.                     t.getLocation().setX(posX);
    19.                     t.getLocation().setY(posY);
    20.                     t.getLocation().setZ(posZ);
    21.  
    22.                     p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Teleportation erfolgreich abgeschlossen!");
    23.                     t.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Teleportation erfolgreich abgeschlossen!");
    24.  
    25.                     return true;
    26.                 }
    27.             } else {
    28.                 p.sendMessage(ChatColor.DARK_GREEN + "[Elrontur] " + ChatColor.BLUE + "Der Spieler " + ChatColor.GREEN + args[0] + ChatColor.BLUE + " ist nicht online - Lokalisierung abgebrochen!");
    29.             }
    30.         }
    31.  
     
    #4
  5. DerHolzhacker
    Offline

    DerHolzhacker

    Registriert seit:
    24. April 2012
    Beiträge:
    360
    Ort:
    Bayern
    Minecraft:
    DerHolzhacker
    Das hört / schaut besser aus! als mit args
     
    #5
  6. Elronturalt
    Offline

    Elronturalt Gesperrt

    Registriert seit:
    3. Juli 2012
    Beiträge:
    62
    Neues Problem - Benötige Admin-Permission, die die Gast-Permission unterbindet!... >.<

    Hi alle!

    Ich brauche in meinem kleinen Listener eine Permission, welches die Gast-Permission inaktiv macht, sobald man die Admin-Permission hat!
    Hier ist der Code:

    Code (Text):
    1. @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=false)
    2.     public void onBlockPlace(BlockPlaceEvent e) {
    3.        
    4.         Player p = e.getPlayer();
    5.  
    6.         if (p.hasPermission("elrontur.guest")) {
    7.             p.sendMessage(plg + ChatColor.BLUE + "Du musst dich erst " + ChatColor.GREEN + "freischalten lassen" + ChatColor.BLUE + ", um mit der Welt interagieren zu können!");
    8.             e.setCancelled(true);
    9.         }
    10.     }

    Dies ist der eine Listener; da habe ich halt dann noch den BlockBreak-Listener, BlockIgnite-Listener und den PlayerInteract-Listener.
    So wie ich denke, müsste man das dann in all den Listenern übertragen können... ^^

    Wer hätte da eine Idee?
     
    #6
  7. Logische bedingunen:

    Code (Text):
    1. if (p.hasPermission("elrontur.guest") && !p.hasPermission("elrontur.admin") {
    2.             p.sendMessage(plg + ChatColor.BLUE + "Du musst dich erst " + ChatColor.GREEN + "freischalten lassen" + ChatColor.BLUE + ", um mit der Welt interagieren zu können!");
    3.             e.setCancelled(true);
    4.         }
     
    #7
  8. Elronturalt
    Offline

    Elronturalt Gesperrt

    Registriert seit:
    3. Juli 2012
    Beiträge:
    62
    PlayerJoinEvent / PlayerQuitEvent / PlayerDeathEvent - NullPointerExeption?!

    Hallo alle!
    Ich habe nun eine NullPointerExeption in meinen Listenern!
    Ich fügte mir eine Config ein, nur die Nachrichten geben es nicht aus...
    Code (Text):
    1. package me.Elrontur.LingoRevision;
    2.  
    3. import java.io.File;
    4.  
    5. import org.bukkit.plugin.java.JavaPlugin;
    6.  
    7. import me.Elrontur.LingoRevision.LingoRevision;
    8.  
    9. public class LingoRevision extends JavaPlugin {
    10.    
    11.     @Override
    12.     public void onDisable() {
    13.        
    14.         System.out.println(" ");
    15.         System.out.println("[LingoRevision] )III( BY ELRONTUR {OFF}");
    16.         System.out.println(" ");
    17.        
    18.     }
    19.  
    20.     @Override
    21.     public void onEnable() {
    22.        
    23.         File fileconfig = new File(getDataFolder(), "config.yml");
    24.        
    25.         if (!fileconfig.exists()) {
    26.            
    27.         getDataFolder().mkdir();
    28.        
    29.         getConfig().addDefault("active", Boolean.valueOf(true));
    30.         getConfig().addDefault("joinmessage", "§7%p joins %s!");
    31.         getConfig().addDefault("quitmessage", "§8%p leaves %s!");
    32.         getConfig().addDefault("deathmessage", "§c%p is died!");
    33.         getConfig().addDefault("servername", "server");
    34.         getConfig().options().copyDefaults(true);
    35.        
    36.         getConfig().options().header("--------------------------\nLingoRevision by Elrontur\n--------------------------\nCONFIG:\n--------------------------");
    37.         getConfig().options().copyHeader(true);
    38.        
    39.         saveConfig();
    40.         }
    41.        
    42.         getServer().getPluginManager().registerEvents(new EventListener(), this);
    43.  
    44.         System.out.println(" ");
    45.         System.out.println("[LingoRevision] )III( BY ELRONTUR {ON}");
    46.         System.out.println(" ");
    47.     }
    48.  
    49. }
    Code (Text):
    1. package me.Elrontur.LingoRevision;
    2.  
    3. import me.Elrontur.LingoRevision.EventListener;
    4.  
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.EventPriority;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.entity.PlayerDeathEvent;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.event.player.PlayerQuitEvent;
    12.  
    13. public class EventListener implements Listener {
    14.    
    15.     private static LingoRevision plugin;
    16.  
    17.     @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=false)
    18.     public void onJoin(PlayerJoinEvent e) {
    19.                
    20.     Player p = e.getPlayer();
    21.    
    22.     if (plugin.getConfig().getBoolean("active") == true) {
    23.         if ((!p.getName().equalsIgnoreCase(""))) {
    24.             e.setJoinMessage(plugin.getConfig().getString("joinmessage").replace("%p", p.getName()).replace("%s", plugin.getConfig().getString("servername")));
    25.             }
    26.         }
    27.     }
    28.  
    29.     @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=false)
    30.     public void onQuit(PlayerQuitEvent e) {
    31.                
    32.     Player p = e.getPlayer();
    33.  
    34.     if (plugin.getConfig().getBoolean("active") == true) {
    35.         if ((!p.getName().equalsIgnoreCase(""))) {
    36.             e.setQuitMessage(plugin.getConfig().getString("quitmessage").replace("%p", p.getName()).replace("%s", plugin.getConfig().getString("servername")));
    37.             }
    38.         }
    39.     }
    40.     @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=false)
    41.     public void onDeath(PlayerDeathEvent e) {
    42.                
    43.     Player p = (Player) e.getEntity();
    44.  
    45.     if (plugin.getConfig().getBoolean("active") == true) {
    46.         if ((!p.getName().equalsIgnoreCase(""))) {
    47.             e.setDeathMessage(plugin.getConfig().getString("joinmessage").replace("%p", p.getName()).replace("%s", plugin.getConfig().getString("servername")));
    48.             }
    49.         }
    50.     }
    51.  
    52. }
    53.  
     
    #8
  9. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    plugin ist null, da du es weder Initialisierst noch übergibst.
     
    #9
  10. Elronturalt
    Offline

    Elronturalt Gesperrt

    Registriert seit:
    3. Juli 2012
    Beiträge:
    62
    plugin ist immernoch null -.-

    Das ist doof, denn plugin ist immernoch null!
    Ich schrieb das so:
    Code (Text):
    1. package me.Elrontur.LingoRevision;
    2.  
    3. import me.Elrontur.LingoRevision.EventListener;
    4.  
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.EventPriority;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.entity.PlayerDeathEvent;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.event.player.PlayerQuitEvent;
    12.  
    13. public class EventListener implements Listener {
    14.    
    15.     private LingoRevision plugin;
    16.    
    17.     public EventListener(LingoRevision plugin) {
    18.         this.plugin = plugin;
    19.     }
    20.  
    21.     @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=false)
    22.     public void onJoin(PlayerJoinEvent e) {
    23.                
    24.     Player p = e.getPlayer();
    25.    
    26.     if (plugin.getConfig().getBoolean("active") == true) {
    27.         if ((!p.getName().equalsIgnoreCase(""))) {
    28.             e.setJoinMessage(plugin.getConfig().getString("joinmessage").replace("%p", p.getName()).replace("%s", plugin.getConfig().getString("servername")));
    29.             }
    30.         }
    31.     }
    32.  
    33.     @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=false)
    34.     public void onQuit(PlayerQuitEvent e) {
    35.                
    36.     Player p = e.getPlayer();
    37.  
    38.     if (plugin.getConfig().getBoolean("active") == true) {
    39.         if ((!p.getName().equalsIgnoreCase(""))) {
    40.             e.setQuitMessage(plugin.getConfig().getString("quitmessage").replace("%p", p.getName()).replace("%s", plugin.getConfig().getString("servername")));
    41.             }
    42.         }
    43.     }
    44.     @EventHandler(priority=EventPriority.NORMAL, ignoreCancelled=false)
    45.     public void onDeath(PlayerDeathEvent e) {
    46.                
    47.     Player p = (Player) e.getEntity();
    48.  
    49.     if (plugin.getConfig().getBoolean("active") == true) {
    50.         if ((!p.getName().equalsIgnoreCase(""))) {
    51.             e.setDeathMessage(plugin.getConfig().getString("joinmessage").replace("%p", p.getName()).replace("%s", plugin.getConfig().getString("servername")));
    52.             }
    53.         }
    54.     }
    55.  
    56. }
    57.  
    Und bei der Zeile
    Code (Text):
    1. getServer().getPluginManager().registerEvents(new EventListener(null), this);
    ist nun das null in der Klammer...
     
    #10
  11. CraftFighter
    Offline

    CraftFighter

    Registriert seit:
    14. April 2012
    Beiträge:
    14
    Versuch mal das
    getServer().getPluginManager().registerEvents(new EventListener(this), this);
     
    #11
Status des Themas:
Es sind keine weiteren Antworten möglich.