Selbstprogrammiertes Plugin startet nich

09/01/2012 09:19 Apvper#1
Hallo Leute,
Ich habe mit letztens mal ein kleines kit plugin programmiert
doch es lädt nicht.
Infos:

Serverversion: Bukkit 1.3.1
Bukkit API Version: 1.3.2 (Hab auch schon versucht den server auf 1.3.2 zu updaten danach läd es aber auch nich)

Fehlermeldung: Zeile 447: 2012-09-01 08:53:53 [SEVERE] Could not load 'plugins/FutureWar.jar' in folder 'plugins'

Plugincode:
Code:
 package me.Architekt00.FutureWar;
     
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
     
    public class FutureWar extends JavaPlugin {
     
        @Override
        public void onEnable(){
            
        }
     
        @Override
        public void onDisable(){
        
            
      [COLOR="Red"]  }[/COLOR]
        
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args, Player p){
        	if(cmd.getName().equalsIgnoreCase("jumper")){ // If the player typed /basic then do the following...
        		
        		p.getInventory().clear();
        		p.getInventory().setHelmet(new ItemStack(310,1)); //Diamant
        		p.getInventory().setChestplate(new ItemStack(299,1)); //Leder
        		p.getInventory().setLeggings(new ItemStack(300,1)); //Leder
        		p.getInventory().setBoots(new ItemStack(301,1)); //Leder
        		p.getInventory().addItem(new ItemStack(345,1)); //Kompass
        		p.getInventory().addItem(new ItemStack(267,1)); // Eisenschwert
        	}
        		if(cmd.getName().equalsIgnoreCase("Robotter")){ // If the player typed /basic then do the following...
            		
            		p.getInventory().clear();
            		p.getInventory().setHelmet(new ItemStack(306,1));
            		p.getInventory().setChestplate(new ItemStack(307,1));
            		p.getInventory().setLeggings(new ItemStack(308,1));
            		p.getInventory().setBoots(new ItemStack(309,1));
            		p.getInventory().addItem(new ItemStack(260,5)); //Apfel
            		p.getInventory().addItem(new ItemStack(276,1));  // Diamantschwert
        		}
            		if(cmd.getName().equalsIgnoreCase("Heildrohne")){ // If the player typed /basic then do the following...
                		
                		p.getInventory().clear();
                		p.getInventory().setHelmet(new ItemStack(310,1));
                		p.getInventory().setChestplate(new ItemStack(311,1));
                		p.getInventory().setLeggings(new ItemStack(312,1));
                		p.getInventory().setBoots(new ItemStack(313,1));
                		p.getInventory().addItem(new ItemStack(260,10)); //Apfel
                		p.getInventory().addItem(new ItemStack(322,10)); //Goldapfel
                		p.getInventory().addItem(new ItemStack(272,1));  // Steinschwert
            		}
            		
            		if(cmd.getName().equalsIgnoreCase("superjumper")){
            		if (!p.hasPermission("futurewar.superjumper")) {
            		
if(cmd.getName().equalsIgnoreCase("superjumper")){ // If the player typed /basic then do the following...
                		
                		p.getInventory().clear();
                		p.getInventory().setHelmet(new ItemStack(310,1));
                		p.getInventory().setLeggings(new ItemStack(312,1));
                		p.getInventory().setBoots(new ItemStack(313,1));
                		p.getInventory().setChestplate(new ItemStack(311,1));
                		p.getInventory().addItem(new ItemStack(260,10)); //Apfel
                		p.getInventory().addItem(new ItemStack(276,1));  // Diamantschwert
                		p.getInventory().addItem(new ItemStack(261,1)); //Bogen
                		p.getInventory().addItem(new ItemStack(262,128)); //Pfeile
                		p.getInventory().addItem(new ItemStack(332,128)); //Schneebälle
                		p.getInventory().addItem(new ItemStack(345,1)); //Kompass
            		}
            		
        		return true;
        //If this has happened the function will break and return true. if this hasn't happened the a value of false will be returned.

       [COLOR="Red"] }[/COLOR]


        
            		}
Hab grad gesehn sind auch 2 errors drin (rot markiert)
bite um schnelle Hilfe
LG apvper
09/01/2012 09:25 cyn0x#2
Schick mal den ganzen Fehlercode..
09/01/2012 10:08 Howaner#3
also.
Code:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args, Player p){
das geht so nicht
Muss so heißen:
Code:
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
Danach
füge nach dem public boolean usw... das ein:
Code:
if (!(sender instanceof Player)){
sender.sendMessage(ChatColor.RED + "Sie sind kein Spieler!");
return;
}
Player p = (Player)sender;
09/01/2012 13:32 InGlory#4
Jo so geht es ;D
09/01/2012 13:42 Apvper#5
Ich checks einfach alles nich egal was ich mache das klappt nicht

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

[Only registered and activated users can see links. Click Here To Register...]

soo da hab ichs...
09/01/2012 15:27 ComputerBaer#6
Dann setz doch einfach noch ein paar } ans Ende bis die Fehler weg sind.

Edit: Wenn es nicht hilft poste bitte nochmal den Source, ich mag dafür keine Screens.
09/01/2012 15:28 InGlory#7
Schick halt mal die Vollständige Serverlog ;D
09/01/2012 19:36 Freak2011#8
Auf dem letzten Screen steht doch wo das problem liegt :facepalm:

Du musst den ClassBody vervollständigen indem du ein "}" hintendran hängst.
Du musst den MethodBody vervollständigen indem du ein "}" hintendran hängst.
(also insgesamt zwei "}" hintendran pappen ;) )
Und dann scheint eine IF-Anweisung nicht vollendet zu sein. Sprich, du musst die Anweisung mit einem else Statement vollenden.(Ich gehe einfach mal davon aus du weißt was das ist)
09/01/2012 20:40 ComputerBaer#9
Quote:
Originally Posted by Freak2011 View Post
Und dann scheint eine IF-Anweisung nicht vollendet zu sein. Sprich, du musst die Anweisung mit einem else Statement vollenden.(Ich gehe einfach mal davon aus du weißt was das ist)
Ein if muss kein else haben, deshalb wundert mich der Fehler ein wenig ... wird wohl an einem eher dämlichen Fehler liegen. (nichts gegen dich, Apvper)

@Apvper
Wenn du jetzt immernoch nciht weiter kommst wäre es schön wenn der Source wieder als text kommt und nicht als Bild.
09/01/2012 21:09 Freak2011#10
Quote:
Originally Posted by ComputerBaer View Post
Ein if muss kein else haben, deshalb wundert mich der Fehler ein wenig ... wird wohl an einem eher dämlichen Fehler liegen. (nichts gegen dich, Apvper)
Hab mir das Bild mal in groß angeguckt.
Lösung: Einfach drei "}" hinten dran hängen.
Eine wegen dem ClassBody, eine wegen dem MethodBody und eine für die letzte IF-Anweisung ;)
Da die letzte IF-Anweisung nicht mit einer "}" beendet ist, erwartet der Compiler ein else Statement.

Also wie du schon vermutet hast ComputerBaer, es war ein "Flüchtigkeits-Fehler" ;)
09/01/2012 21:58 ComputerBaer#11
Naja, hinten alle Klammern wegzulöschen ist mehr als nur flüchtig.
Ich glaube jemand der das nicht sieht, sogar wenn ihn eine Fehlermeldung direkt darauf stößt sollte es mit dem Programmieren lassen oder dringend die Grundlagen wiederholen.

Zu den dämlichen Fehlern, ja so nenne ich die Flüchtigkeitsfehler beim Programmieren und das auch wenn ich sie mache. Also nehmts mir nicht übel.

Ich habe mir die Screens jetzt mal genauer angesehen, ja bisher habe ich nur einen Blick auf die fehlermeldung geworfen.
Dabei ist mir aufgefallen das dieser Source genau das Gegenteil von sauber formatiert ist.
Wie man solchen Source mit einer Entwicklungsumgebung wie Eclipse (oder auch Visual Studio) produzieren kann ist mir echt ein Rätsel, aber es gibt immer wieder Leute die das scheinbar problemlos schaffen.

Also wenn du solche Fehler reduzieren willst wäre es hilfreich deinen Source mal vernünftig zuformatieren, bzw. nicht immer die Formatierung die Eclipse dir gibt wieder zukillen.
Dein Source geht hin und her, da kann man ja nichtmal erkennen welche Klammern zueinander gehören und ob das jetzt verschachtelt ist, oder einfach nur hintereinander steht.

Aber eine Frage hab ich noch, warum kommentierst du halb Deutsch und halb Englisch? Nimm eins von beiden oder immer beide, aber nicht bunt durcheinander.

Dann warte ich jetzt mal gespannt auf den nächsten Fehler. Es würde mich nicht wundern wenn du mich mit dem auch wieder überrascht.
09/01/2012 23:19 .Faez#12
Wo lernt ihr sowas überhaupt ;o?
09/01/2012 23:29 ComputerBaer#13
Solche Fehler machen oder Programmieren?

Will jetzt hier keine großen Geschichte erzählen, aber bei mir waren es: Eltern, Internet und Schule, ja ich lerne programmieren in der Schule.

Wenn du Java lernen willst kannst du dir ja mal das hier ansehen: [Only registered and activated users can see links. Click Here To Register...]
Bei anderen Sprachen und IT Sachen gibt es auch noch Openbooks: [Only registered and activated users can see links. Click Here To Register...]

Wo man solche Fehler lernt weiß ich nicht, aber das kann ja nicht gut sein.
Ich kenne es ja auch das man Programmiert und dann funktioniert es nicht ... und man sucht und sucht und versteht die Welt nicht mehr, aber die Fehlermeldung ist ja doch mehr als eindeutig.

Edit:
Wer Java kann und einen Einstieg für Bukkitplugins sucht: [Only registered and activated users can see links. Click Here To Register...]
09/03/2012 18:14 Apvper#14
Soo Hi
Fehler werden keine mehr angezeigt das Plugin startet trotzdem nicht.

Hier mal der Code:

Code:
package me.Architekt00.FutureWar;
     
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
     
    public class FutureWar extends JavaPlugin
    {
        @Override
        public void onEnable()
        {
        }
        @Override
        public void onDisable()
        {
        }
        
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
        {
        if (sender instanceof Player)
        {
        	Player p = (Player)sender;
        	if(cmd.getName().equalsIgnoreCase("jumper"))
        	{	
        		p.getInventory().clear();
        		p.getInventory().setHelmet(new ItemStack(310,1)); //Diamant
        		p.getInventory().setChestplate(new ItemStack(299,1)); //Leder
        		p.getInventory().setLeggings(new ItemStack(300,1)); //Leder
        		p.getInventory().setBoots(new ItemStack(301,1)); //Leder
        		p.getInventory().addItem(new ItemStack(345,1)); //Kompass
        		p.getInventory().addItem(new ItemStack(267,1)); // Eisenschwert
        	}

        	if(cmd.getName().equalsIgnoreCase("Roboter"))
        	{
            	p.getInventory().clear();
            	p.getInventory().setHelmet(new ItemStack(306,1));//Eisen
            	p.getInventory().setChestplate(new ItemStack(307,1));//Eisen
            	p.getInventory().setLeggings(new ItemStack(308,1));//Eisen
            	p.getInventory().setBoots(new ItemStack(309,1));//Eisen
            	p.getInventory().addItem(new ItemStack(260,5)); //Apfel
            	p.getInventory().addItem(new ItemStack(276,1));  // Diamantschwert
        	}
           
        	if(cmd.getName().equalsIgnoreCase("Heildrohne"))
        	{
            	p.getInventory().clear();
                p.getInventory().setHelmet(new ItemStack(310,1));//Diamant
                p.getInventory().setChestplate(new ItemStack(311,1));//Diamant
                p.getInventory().setLeggings(new ItemStack(312,1));//Diamant
                p.getInventory().setBoots(new ItemStack(313,1));//Diamant
                p.getInventory().addItem(new ItemStack(260,10)); //Apfel
                p.getInventory().addItem(new ItemStack(322,10)); //Goldapfel
                p.getInventory().addItem(new ItemStack(272,1));  // Steinschwert
            }
            		
        	if(cmd.getName().equalsIgnoreCase("superjumper"))
        	{
        		if (p.hasPermission("futurewar.superjumper"))
        		{
                    p.getInventory().clear();
                	p.getInventory().setHelmet(new ItemStack(310,1));//Diamant
                	p.getInventory().setLeggings(new ItemStack(312,1));//Diamant
                	p.getInventory().setBoots(new ItemStack(313,1));//Diamant
                	p.getInventory().setChestplate(new ItemStack(311,1));//Diamant
                	p.getInventory().addItem(new ItemStack(260,10)); //Apfel
                	p.getInventory().addItem(new ItemStack(276,1));  // Diamantschwert
                	p.getInventory().addItem(new ItemStack(261,1)); //Bogen
                	p.getInventory().addItem(new ItemStack(262,128)); //Pfeile
                	p.getInventory().addItem(new ItemStack(332,128)); //Schneebälle
                	p.getInventory().addItem(new ItemStack(345,1)); //Kompass
            	}
        	}
            }
            return true;
        }
    }
Vielleicht fällt euch auf mir hat jemand das formatieren beigebracht. =D
Also könnte es daran liegen dass der server erst 1.3.1. ist und die verwendete Bukkit API 1.3.2?
Und noch eine frage wie poste ich die server.log richtig?
Danke für die zahlreichen antworten.

PS:
Bin halt ein Progammieranfänger und lerne grade erst sry :)

Edit:Hab grad mal den beta build von 1.3.2 auf den server geladen funktioniert auch nicht.
Edit Edit:Könnte es auch an meiner .yml liegen? ich kenn mich da leider nicht aus.
Code:
name:  FutureWar
vesion:  1.0
author:  Architekt00
website:  http://www.bukkit.org/

main:  me.architekt00.futureWar.FutureWar

commands:
  Jumper:
    description:  Verwandlung in Jumper
    usage:  /jumper
  Robotter:
    description:  Verwandlung in Robotter
    usage:  /robotter
  Heildrohne:
    description:  Verwandlung in Heildrohne
    usage:  /heildrohne
  Cyborg:
    description:  Verwandlung in Cyborg
    usage:  /cyborg
  Superjumper:
    description:  Verwandlung in Superjumper
    usage:  /superjumper
09/03/2012 18:36 ComputerBaer#15
Quote:
Originally Posted by Apvper View Post
Fehler werden keine mehr angezeigt das Plugin startet trotzdem nicht.

Und noch eine frage wie poste ich die server.log richtig?

Vielleicht fällt euch auf mir hat jemand das formatieren beigebracht. =D
Was heißt es startet nicht? Wird es von Bukkit nicht geladen? Gibts irgendwas in den Logs?
Wie postest du die richtig ... ka, nimm auch einfach code, oder mach ein zitat draus. Wenn es zulang ist kann ein spoiler ausrum nicht schaden.

Das formatieren ... naja, da sind noch ein paar Stellen. Ist aber schon deutlich besser als vorher.