1. 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!

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. Werbung
    Online

    Werbung

  3. Cabraca
    Online

    Cabraca

    Code (Text):
    1. Player t = (Player) this.getServer().getPlayer(args[0]);
    Sicher, dass argumente übergeben wurden? (args[0] also existiert?
     
    #2
  4. 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
  5. 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
  6. DerHolzhacker
    Offline

    DerHolzhacker

    Registriert seit:
    24. April 2012
    Beiträge:
    343
    Ort:
    Bayern
    Minecraft:
    DerHolzhacker
    Das hört / schaut besser aus! als mit args
     
    #5
  7. 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
  8. 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
  9. 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
  10. Calenria
    Offline

    Calenria

    Registriert seit:
    28. Juli 2012
    Beiträge:
    387
    Minecraft:
    Calenria
    plugin ist null, da du es weder Initialisierst noch übergibst.
     
    #9
  11. 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
  12. 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.