Plugin programmierung

Dieses Thema im Forum "Programmierung" wurde erstellt von FlamePlayHD, 12. Mai 2013.

  1. FlamePlayHD
    Offline

    FlamePlayHD

    Registriert seit:
    27. April 2013
    Beiträge:
    17
    Hallo

    Ich habe heute angefangen Plugins zu programmieren und ich hatte auch viel Hilfe von YouTube / Internet / Kollegen usw.
    Nun komme ich leider nicht mehr weiter und hoffe auf Hilfe hier im Forum.

    Also ich will ein Plugin programmieren welches nach einer gewissen Zeit im Chat anzeigt wieviele Spieler online sind.
    Bisher habe ich leider nur ein Teil des Codes rausgefunden:

    public void run() {
    int players = Bukkit.getServer().getOnlinePlayers().length;
    int maxplayers = Bukkit.getServer().getMaxPlayers();
    Bukkit.broadcastMessage("§7----§6§l SoxCraft §7-----");
    Bukkit.broadcastMessage("§7" + players + " / " + maxplayers + " §asind online.");

    Kann mir jemand weiterhelfen denn ich komme nichtmehr weiter

    Danke und LG
     
    #1
  2. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    686
    #2
  3. FlamePlayHD
    Offline

    FlamePlayHD

    Registriert seit:
    27. April 2013
    Beiträge:
    17
    Danke...
    Bisher bin ich so weit gekommen: (Hilfe von janomine)

    package me.Creppii.SoxCraft;

    import org.bukkit.Bukkit;
    import org.bukkit.Server;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.scheduler.BukkitScheduler;

    public class Onlineanzeige {
    public static int LobbyCountdown = 1;
    public static boolean isRunning = false;
    static int Online = Bukkit.getServer().getOnlinePlayers().length;
    static int max = Bukkit.getServer().getMaxPlayers();

    public static void runcountdown(){
    LobbyCountdown = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Bukkit.getServer().getPluginManager().getPlugin("SoxCraft"),new Runnable(){

    @Override
    public void run(){
    isRunning = true;
    Bukkit.broadcastMessage("§7----§6§l SoxCraft §7-----");
    Bukkit.broadcastMessage("§7" + Online + " / " + max + " §asind online.");

    return;
    }
    }, 0L, 20L);
    }
    }




    Und wie kann ich Die Zeit einstellen? Ich komme hier nicht draus:
    }, 0L, 20L);
     
    #3
  4. games6471
    Online

    games6471

    Wenn du dir mal die Parameternamen, der verwendeten Methode anschaust (in diesem Fall: scheduleSyncRepeatingTask), dann wirst du merken wofür die Zahlen stehen.

    }, 0L, 20L);

    3. Parameter: delay (zu Deutsch Verzögerung)

    4. Parameter: period (kann man mit Intervall übersetzen)

    Die Werte sind in Ticks angegeben. Pro Sekunde werden bzw. sollten 20 Ticks ausgeführt werden. Wenn du nun eine Schedule aufbaust, die alle 5 Min ausgeführt wird kannst du die Intervall so angeben:
    Keine Angst, der Compiler optimiert solche Angaben schon im Bytecode (in der Jar), sodass beim Ausführen nicht immer und immer wieder die Rechnung ausgeführt wird.
     
    #4
  5. FlamePlayHD
    Offline

    FlamePlayHD

    Registriert seit:
    27. April 2013
    Beiträge:
    17
    package me.Creppii.SoxCraft;

    import org.bukkit.Bukkit;
    import org.bukkit.Server;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.scheduler.BukkitScheduler;

    public class Onlineanzeige {
    public static int Countdown = 1;
    public static boolean isRunning = false;
    static int Online = Bukkit.getServer().getOnlinePlayers().length;
    static int max = Bukkit.getServer().getMaxPlayers();

    public static void runcountdown(){
    Countdown = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Bukkit.getServer().getPluginManager().getPlugin("SoxCraft"),new Runnable(){

    @Override
    public void run(){
    isRunning = true;
    Bukkit.broadcastMessage("§7----§6§l SoxCraft §7-----");
    Bukkit.broadcastMessage("§7" + Online + " / " + max + " §asind online.");

    return;
    }
    }, 0L, 20L);
    }
    }




    Habe es geschafft, das Plugin läuft nun.
    Jedoch falsch. Im Chat steht 0/2013 aber da ich on bin soltle stehen 1/2013 aber das steht nicht.
    Weiss jemand wieso?
     
    #5
  6. games6471
    Online

    games6471

    Static Variablen oder Blöcke werden nur beim Laden der Klasse. Da diese Klasse wahrscheinlich beim Starten geladen wird, ist Wert 0 und bleibt 0. (Du updatest deine Variable nicht)
     
    #6
  7. FlamePlayHD
    Offline

    FlamePlayHD

    Registriert seit:
    27. April 2013
    Beiträge:
    17
    Und wie kann ich das jetzt machen?
    Sorry habe noch nicht viel Ahnung
     
    #7
  8. games6471
    Online

    games6471

    Pack den Online Integer in die Methode rein und update diesen dort.
     
    #8
  9. FlamePlayHD
    Offline

    FlamePlayHD

    Registriert seit:
    27. April 2013
    Beiträge:
    17
    Wie gesagt das ist mein 1. Plugin und ich komme nicht so draus mit Java.. =(

    Könnt ihr mir Tipps geben wo/wie man am besten Java lernt? DAnke
     
    #9
  10. games6471
    Online

    games6471

    #10
  11. Plugin00
    Offline

    Plugin00

    Registriert seit:
    3. Februar 2013
    Beiträge:
    71
    Einfacher Code:

    Code (Text):
    1.     Bukkit.getServer().getScheduler()
    2.       .scheduleSyncRepeatingTask(this, new Runnable() {
    3.       public void run() {
    4.         int players = Bukkit.getServer().getOnlinePlayers().length;
    5.         int maxplayers = Bukkit.getServer().getMaxPlayers();
    6.         Bukkit.broadcastMessage("§7" + players + " / " + maxplayers + " §asind online.");
    7.       }
    8.     }
    9.     , 0L, 1400L);
     
    #11
  12. FlamePlayHD
    Offline

    FlamePlayHD

    Registriert seit:
    27. April 2013
    Beiträge:
    17
    Danke an euch alle für die Hilfe =)

    Das ist nun rausgekommen (mein 1. Plugin):

    package me.Creppii.SoxCraft;

    import org.bukkit.Bukkit;
    import org.bukkit.Server;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.scheduler.BukkitScheduler;

    public class Onlineanzeige {
    public static int Countdown = 1;
    public static boolean isRunning = false;
    static int Online = Bukkit.getServer().getOnlinePlayers().length;
    static int max = Bukkit.getServer().getMaxPlayers();

    public static void runcountdown(){
    Countdown = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Bukkit.getServer().getPluginManager().getPlugin("SoxCraft"),new Runnable(){

    @Override
    public void run(){
    final int Online = Bukkit.getServer().getOnlinePlayers().length;
    final int max = Bukkit.getServer().getMaxPlayers();
    isRunning = true;
    Bukkit.broadcastMessage("§7----§6§l SoxCraft §7-----");
    Bukkit.broadcastMessage("§7" + Online + " / " + max + " §asind online.");

    return;
    }
    }, 0L, 4500L);
    }
    }
     
    #12
  13. games6471
    Online

    games6471

    Jetzt nimmst du noch diese Variablen raus.

    Tipp: Du musst bei isRunning bei der Initialisierung nicht = false hinschreiben, da Klassenvariablen automatisch initialisiert werden. In diesem Fall boolean mit false, ein Integer mit 0, ein Objekt mit null, usw.
     
    #13
  14. Galliar12
    Offline

    Galliar12

    Registriert seit:
    16. Juli 2011
    Beiträge:
    85
    Minecraft:
    Galliar12
    Einen guten Tipp könnte ich dir noch geben: Lern Java. Z.b. Kannst du das so wie ich machen und dir "Java ist auch eine Insel" (http://openbook.galileocomputing.de/javainsel/javainsel_02_005.html) durchlesen. Dann hast du wenigstens Verständnis dazu, was überhaupt passiert/ausgeführt wird. Ich habe am Anfang auch einfach so angefangen wodurch ich Fehler gemacht habe die ich nicht beheben konnte (boolean. Return false anstelle von true z.b. U.ä.)
     
    #14
  15. High_Hunter
    Offline

    High_Hunter

    Registriert seit:
    17. Mai 2013
    Beiträge:
    14
    ja genau wo lernt man am schnellsten java? (gutes :D)
     
    #15
  16. Baba43
    Offline

    Baba43 Ehem. Teammitglied

    Registriert seit:
    5. November 2012
    Beiträge:
    590
    Indem du es praktizierst.
     
    #16
  17. rBxGame
    Offline

    rBxGame Ehem. Teammitglied

    Registriert seit:
    16. Februar 2012
    Beiträge:
    1.077
    KlickMich!

    MFG
    rBx
     
    #17
  18. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    378
    Ort:
    ALT + F4
    Minecraft:
    ikrumi
    Werbung!
    Spaß


    Am Besten ist wirklich sich dranzusetzen, paar Tutorials gucken, vllt. noch ein Buch und einfach drauflos programmieren.
     
    #18