Jobs Plugin

Dieses Thema im Forum "Programmierung" wurde erstellt von Calib0ur, 8. Mai 2014.

  1. Calib0ur
    Offline

    Calib0ur Gesperrt

    Registriert seit:
    16. November 2013
    Beiträge:
    72
    Minecraft:
    CubeyHD
    Hey,
    Ich hatte vor ein Jobs Plugin zu programmieren...
    Erstmal zwei Jobs einmal Fischer und einmal Miner.
    So jetzt zu den eigentlichen Fragen...
    1. Was ist hierdran falsch...?????
    1.Fehler: Syntax error, insert "{" to complete Methode Body
    2.Fehler: Syntax error, insert "}" to complete Methode Body,
    Syntax error insert "else Statement" to complete BlockStatement
    Syntax error insert "else Statement" to complete IfStatement

    Code (Text):
    1. package cJobs;
    2.  
    3. import org.bukkit.command.Command;
    4. import org.bukkit.command.CommandSender;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.plugin.java.JavaPlugin;
    7.  
    8. public class Commands extends JavaPlugin {
    9.     public void onEnable() {
    10.         System.out.println("[cJobs]Plugin gestartet");
    11.             }
    12.     public void onDisable() {
    13.         System.out.println("[cJobs]Plugin gestoppt");
    14.     } <-----1.Fehler Habe dahinter noch eine Klammer gemacht geht aber auch nicht
    15.  
    16. public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
    17.  
    18.     Player p = (Player)sender;
    19.     if (cmd.getName().equalsIgnoreCase("job liste")) {
    20.         if(p.hasPermission("cjobs.liste")) {
    21.             if (args.length == 0) {
    22.                 p.sendMessage("§2Fischer == /job starten Fischer");
    23.                 p.sendMessage("§2Miner   == /job starten Miner");
    24.  
    25.     if (cmd.getName().equalsIgnoreCase("job hilfe")) {
    26.         if(p.hasPermission("cjobs.hilfe")) {
    27.             if (args.length == 0) {
    28.                 p.sendMessage("§2/job starten [Job]");
    29.                 p.sendMessage("§2/job hilfe");
    30.                 p.sendMessage("§2/job liste");
    31.      if (cmd.getName().equalsIgnoreCase("/job starten")) {
    32.          if(p.hasPermission("cjobs.starten")) {
    33.              if (args.length == 0) {
    34.                  p.sendMessage("§2Bitte mache /job starten [Job]");
    35.                  
    36.     if (cmd.getName().equalsIgnoreCase("/job")) {
    37.         if(p.hasPermission("cjobs.job")) {
    38.             if (args.length == 0) {
    39.                 p.sendMessage("§2Bitte mache /job hilfe für Hilfe");
    40.                
    41.     if (cmd.getName().equalsIgnoreCase("/job beenden Fischer")) {
    42.         if(p.hasPermission("cjobs.beenden.fischer")) {
    43.             if (args.length == 0) {
    44.                 p.sendMessage("§2Du hast deinen Job als Fischer beendet");
    45.                
    46.     if (cmd.getName().equalsIgnoreCase("/job beenden Miner")) {
    47.         if(p.hasPermission("cjobs.beenden.miner")) {
    48.             if (args.length == 0) {
    49.                 p.sendMessage("§2Du hast deinen Job als Miner beendet");
    50.    
    51.             }
    52.         }
    53.     }
    54.              }
    55.          }
    56.      }
    57.             }
    58.         }
    59.  
    60.     }
    61.               }
    62.             }
    63.             return true;
    64.         }
    65.         else {
    66.             return false;
    67.         }
    68.         }
    69.         }
    70.     }
    71.             }
    72.         }
    73.     } <-----2.Fehler
    74.  
    2. Wie kriege ich es hin einen Job zu speichern das wenn jemand diese Befehle ausführt z.B. dem Job beitritt.
    Mir wäre ein kleines Beispiel echt hilfreich
     
    #1
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Gibt es eine Fehlermeldung oder/und was genau funktionier nicht? Sollen wir uns ausdenken, was da passieren soll? Mit deiner "Problembeschreibung" kann man dir leider nicht weiterhelfen!
     
    #2
  3. Calib0ur
    Offline

    Calib0ur Gesperrt

    Registriert seit:
    16. November 2013
    Beiträge:
    72
    Minecraft:
    CubeyHD
    Sry fällt mir gerade auf :) habe vergessen dazuzuschreiben wo der fehler ist
     
    #3
  4. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Kommt da jetzt noch eine Fehler/-Meldung/-Beschreibung? oder nicht?
     
    #4
  5. Calib0ur
    Offline

    Calib0ur Gesperrt

    Registriert seit:
    16. November 2013
    Beiträge:
    72
    Minecraft:
    CubeyHD
    habe meinen thread nochmal bearbeitet vlt. könnt ihr jetzt besser helfen :D
     
    #5
  6. To_Bii
    Offline

    To_Bii

    Registriert seit:
    27. Januar 2014
    Beiträge:
    14
    Wichtig wäre die Angabe in welcher Zeile der Fehler auftritt, ich habe wenig Lust alles zu durchsuchen ;)! Sollte eigentlich darunterstehen oder wenn du eine Entwicklungsumgebung nutzt, steht das irgendwo rot unterstrichen!
    Im Endeffekt fehlt dir bei Fehler 1 einmal { } mit nem else irgendwo halt ;)!
     
    #6
  7. Pappi
    Offline

    Pappi Gesperrt

    Registriert seit:
    28. Oktober 2012
    Beiträge:
    141
    Ort:
    H.a.S/NRW/Germany
    Minecraft:
    Pappi / PapaHarni
    Probier es mal so aus :
    Code (Text):
    1.  
    2. package cJobs;
    3.  
    4. import java.util.logging.Level;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.plugin.java.JavaPlugin;
    9.  
    10. public class Commands extends JavaPlugin {
    11.     public void onEnable() {
    12.         this.getLogger().log(Level.INFO, "Plugin gestartet");
    13.     }
    14.    
    15.     public void onDisable() {
    16.         this.getLogger().log(Level.INFO, "Plugin beendet");
    17.     }
    18.  
    19.     public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
    20.  
    21.     Player p = (Player)sender;
    22.     if (!cmd.getName().equalsIgnoreCase("job"))
    23.             return false;
    24.        
    25.         if(args.length < 1) {
    26.             p.sendMessage("Verwende /job (list/hilfe/starten/beenden)");
    27.             return false;
    28.         }
    29.        
    30.         switch(args[0].toLowerCase()) {
    31.             case "liste":
    32.                 //Mach was hier
    33.                 break;
    34.             case "hilfe":
    35.                 //Mach was hier
    36.                 break;
    37.             case "starten":
    38.                 //Mach was hier
    39.                 break;
    40.             case "beenden":
    41.                 //Mach was hier
    42.                 break;
    43.             default:
    44.                 p.sendMessage("Verwende /job (list/hilfe/starten/beenden)");
    45.                 break;
    46.         }
    47.         return true;
    48.     }
    49. }
    Wobei du den Befehl besser in eine extra Datei packst statt diesen in deiner Main Class laufen zu lassen. Ist einfach Ordentlicher.
     
    #7
  8. Calib0ur
    Offline

    Calib0ur Gesperrt

    Registriert seit:
    16. November 2013
    Beiträge:
    72
    Minecraft:
    CubeyHD
    Pappi meint du mit "Mach was hier" eine nachricht also p.sendMessage???
    Aber danke schonmal
     
    #8
  9. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Mit "Mach was hier" ist das gemeint, was passieren soll, wenn das 1. Arguemnt des Befehles das Word nach "case" in der oberen Zeile ist.
    Code (Text):
    1. case "liste":
    2. //Hier der Code, der ausgeführt werden soll, wenn man als 1. Arguemnt "liste" benutzt
    3. break;
    Hier wird dem Spieler eine Nachricht gesendet, wenn das 1. Argument "liste" ist:
    Code (Text):
    1. case "liste":
    2.   p.sendMessage("Du hast als 1. Argument 'liste' benutzt");
    3. break;
     
    #9
    1 Person gefällt das.
  10. Calib0ur
    Offline

    Calib0ur Gesperrt

    Registriert seit:
    16. November 2013
    Beiträge:
    72
    Minecraft:
    CubeyHD
    Ok danke..
    wie kann man wenn man ein plugin programmiert auf ein anderes plugin zugreifen
    denn ich will ja wenn man /job starten Fischer macht das man pro Fisch geld auf sein IConomy konto bekommt
    wäre nett wenn ihr mir sagt wie das geht! :D
     
    #10
  11. [Dev] iTzSasukeHDxLP
    Offline

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Google lieftert Ergebnisse zur API von iConomy

    Einfach im Build Path einfügen und mal ein wenig rumforschen ;)
     
    #11
  12. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Es ist eher empfehlenswert, wenn du die API von Vault benutzt. Jedes Plugin, welches ein Economysystem benutzt, benutzt dafür Vault. Es ist also auf (fast) jedem Server, der solch ein System hat. IConomy ist nicht auf so vielen Servern. Daher solltest du die VaultAPI benutzen, wenn du das Plugin veröffentlichen willst. Ansonsten kannst du auch die IConomyAPI benutzen, wenn du sonst auch IConomy benutzt.
     
    #12
    1 Person gefällt das.
  13. Calib0ur
    Offline

    Calib0ur Gesperrt

    Registriert seit:
    16. November 2013
    Beiträge:
    72
    Minecraft:
    CubeyHD
    Ich habe es jetzt mit dias versucht...
    Hier der Code

    package cJobs;

    import java.util.logging.Level;

    import org.apache.logging.log4j.core.net.Priority;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerFishEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;

    public class Kommandos extends JavaPlugin implements Listener{
    public void onEnable() {
    getServer().getPluginManager().registerEvents(this, this);
    this.getLogger().log(Level.INFO, "Plugin gestartet");
    }

    public void onDisable() {
    this.getLogger().log(Level.INFO, "Plugin beendet");
    }

    public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {

    Player p = (Player)sender;
    if (!cmd.getName().equalsIgnoreCase("job"))
    return false;

    if(args.length < 1) {
    p.sendMessage("§eVerwende /job (liste/hilfe/starten/beenden)");
    return false;
    }

    switch(args[0].toLowerCase()) {
    case "liste":
    p.sendMessage("§eFischer <=> /job starten Fischer");
    p.sendMessage("§eMiner <=> /job starten Miner ");
    break;
    case "hilfe":
    //Mach was hier
    break;
    case "starten Fischer":
    @EventHandler
    public void onFish(PlayerFishEvent e) { // <----------------- Fehler
    p.getInventory().addItem(new ItemStack (264, 1));
    break;
    }
    case "starten Miner":
    //madad
    break;
    case "beenden":
    //Mach was hier
    break;
    default:
    p.sendMessage("Verwende /job (list/hilfe/starten/beenden)");
    break;
    }
    return true;
    }
    }
     
    #13
  14. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Du importierst die falsche Level-Klasse (import org.apache.logging.log4j.core.net.Priority;)
    Du musst "java.util.logging.Level" importieren.
     
    #14
  15. Calib0ur
    Offline

    Calib0ur Gesperrt

    Registriert seit:
    16. November 2013
    Beiträge:
    72
    Minecraft:
    CubeyHD
    ok probiere es mal

    - - - Aktualisiert - - -

    habe es gemacht da ändert sich aber nichts bei dem // onFish da steht "void is an invalid type for the variable onFish"
     
    #15