• 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!

Plugin programmierung

FlamePlayHD

Minecrafter
Registriert
27 April 2013
Beiträge
17
Diamanten
0
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
 

FlamePlayHD

Minecrafter
Registriert
27 April 2013
Beiträge
17
Diamanten
0
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);
 
G

games6471

Guest
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.
 

FlamePlayHD

Minecrafter
Registriert
27 April 2013
Beiträge
17
Diamanten
0
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?
 

Plugin00

Kuhfänger
Registriert
3 Februar 2013
Beiträge
71
Diamanten
0
Einfacher Code:

Code:
    Bukkit.getServer().getScheduler()
      .scheduleSyncRepeatingTask(this, new Runnable() {
      public void run() {
        int players = Bukkit.getServer().getOnlinePlayers().length;
        int maxplayers = Bukkit.getServer().getMaxPlayers();
        Bukkit.broadcastMessage("§7" + players + " / " + maxplayers + " §asind online.");
      }
    }
    , 0L, 1400L);
 

FlamePlayHD

Minecrafter
Registriert
27 April 2013
Beiträge
17
Diamanten
0
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);
}
}
 
G

games6471

Guest
static int Online = Bukkit.getServer().getOnlinePlayers().length;
static int max = Bukkit.getServer().getMaxPlayers();

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.
 

Galliar12

Kuhfänger
Registriert
16 Juli 2011
Beiträge
85
Diamanten
0
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.ä.)
 
Oben