@handyhacker
Wenn args.length == 1 ist, wird timesCalled++; danach kommt die Abfrage ob args.length == 2 ist, welches stimmt, da timesCalled++; erhöht wurde.
Und das immer so weiter![]()
@Johannes_C25
okay, nun habe ich mein Runnable fertig kommen ich nur net mit den Scheduler parametern klar (Es wird alles richtig ausgegeben, nur alles auf einem mal.):
Code:String st = args[0]; int second = Integer.parseInt(st); int seconds = second * 20; long scs = seconds; final int ticks = second / 4; String s = getConfig().getString("Settings.Message"); final long Lticks = seconds / 4; getServer().broadcastMessage(s.replaceAll("%seconds/", args[0])); getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { public void run() { if (timesCalled < 4) { if (timesCalled == 0) { timesCalled++; } if (timesCalled == 1) { timesCalled++; int tcone = ticks * 3; String ss = getConfig().getString("Settings.RepeatingMessage"); getServer().broadcastMessage(ss.replaceAll("%seconds/", String.valueOf(tcone))); } if (timesCalled == 2) { timesCalled++; int tcone = ticks * 2; String ss = getConfig().getString("Settings.RepeatingMessage"); getServer().broadcastMessage(ss.replaceAll("%seconds/", String.valueOf(tcone))); } if (timesCalled == 3) { timesCalled++; int tcone = ticks; String ss = getConfig().getString("Settings.RepeatingMessage"); getServer().broadcastMessage(ss.replaceAll("%seconds/", String.valueOf(tcone))); } }else{ getServer().dispatchCommand(getServer().getConsoleSender(), "stop"); } } } , Lticks, scs);
Wegen timesCalled:
Der Code vor onEnable():
Code:public class TimeStop extends JavaPlugin { Logger log; public Integer timesCalled = 0; PluginDescriptionFile pdf;
@handyhacker
Wenn args.length == 1 ist, wird timesCalled++; danach kommt die Abfrage ob args.length == 2 ist, welches stimmt, da timesCalled++; erhöht wurde.
Und das immer so weiter![]()
Du bist echt ... manchmal denk ich du bist...
PASS AUF! (Ja jetzt werde ich agro)
Es geht nicht um args.length -.-...
mit länge des Arrays habe ich schon gehandelt die Zahl ist in args[0] zu finden, da brauch man keine Abfrage, nur ob die länge 0 berträgt!
Es is so das timesCalled = 0 ist also zuerst wenn es 0 ist wird es ++, und wenn timesCalled 1 dann auch nur mit ausgabe, DAS IST AUCH ALLES RICHTIG, aber ich gebe /tstop 20 ein und nach 5 Sek. kommt dann ALLES GLEICHZEITIG (also "In 15...", "In 10..." und "In 5").
Also muss ich was falsch mit den Paratmetern des Schedulers falsch gemacht haben.
(@Panjab )
@handyhacker
Weil alle Abfragen im gleichen Scheduler sind?
€dit: fail, vergiss es
Geändert von Panjab (03.11.2012 um 12:28 Uhr)
@Panjab verstehst du die zwei?PHP-Code:scheduleSyncRepeatingTask(Plugin plugin /* versteh ich*/, Runnable run /* versteh ich */, long timeout /* versteh ich nicht weil: */, long period /* ich das hier nicht versteh */)
long period?
Das steht dafür, wie ange das alles laufen sollAlso z.B. 60 --> 3 Sekunden lang.
Das denke ich auch aber die verzögerung zwischen den Ausgeben ist nicht da
@handyhacker dann starte deinen eigenen thread und vergiss die bukkit thread sch****
Das TS3 auf dem ich mich öfters rumwusle:
78.47.181.16:9999
TAUZIEHEN REGELWERK
...NEIN!
die erste Zahl ist, nach wie viel Sekunden die Methode das ERSTE Mal aufgerufen werden soll, und die zweite, alle wie viel Sekunden es sich wiederholen soll!!!
In deinem Fall solltest du beim ersten 0 und beim zweiten... du weißt schon was verwenden...
Edit: Sorry, Ticks natürlich, nicht sekunden.
Edit2: Du programmierst gerade irgendwie etwas komisch zusammen... ich hab deinen Code mal etwas abgeändert (nein, nicht getestet) :
Code:String st = args[0]; int seconds = Integer.parseInt(st); int ticks = seconds * 20; final int period = ticks / 4; String s = getConfig().getString("Settings.Message").replace(""%seconds/", String.valueof(seconds)); getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { public void run() { if (timesCalled < 4) { timesCalled++; getServer().broadcastMessage(s); }else{ getServer().dispatchCommand(getServer().getConsoleSender(), "stop"); } } } , 0, ticks);
Geändert von Johannes_C25 (03.11.2012 um 19:02 Uhr)
Habe mal ein kleines Plugin geschrieben aber ich bekomme immer ein Fehler, dass er die plugin.yml nicht laden kann. Wo genau der Fehler ist weiß ich nicht. Vielleicht kann mir ja jemand behilflich sein.
Source:
Code:package org.bukkit.plugin; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.plugin.PluginDescriptionFile; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; public class Datrebook extends JavaPlugin{ @Override public void onDisable() { System.out.println("Plugin wurde ausgeschaltet"); } @Override public void onEnable() { PluginDescriptionFile pdffile= this.getDescription(); System.out.println("Plugin " + pdffile.getVersion() + "wurde gestartet"); } public boolean onCommand (CommandSender sender, Command cmd, String commandLabel, String [] args){ if(!(sender instanceof Player)) { return false; } Player p = (Player) sender; if (cmd.getName().equalsIgnoreCase("info")) { if (args.length !=0){ return false; } p.sendMessage(ChatColor.GREEN + "Das Plugin wird verwendet"); return true; } if(cmd.getName().equalsIgnoreCase("heal")) { if (args.length !=0){ return false; } p.setHealth(20); p.sendMessage("Du hast nun wieder volles Leben."); } return false; } }
Plugin YML:
Fehlermeldung:Code:name: Datrebook version: 0.1 main: org.bukkit.plugin.Datrebook commands: info: description: Serverinfo usage: /<command> heal: description: Healplayer usage: /<command>
Erstmal basiert der Source nur auf einem Tutorial, aber irgendwie ist da noch was falschCode:2012-11-12 20:17:34 [SEVERE] Could not load 'plugins\Datrebook.jar' in folder 'plugins' org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:207) at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:132) at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:227) at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:203) at net.minecraft.server.ServerConfigurationManagerAbstract.<init>(ServerConfigurationManagerAbstract.java:50) at net.minecraft.server.ServerConfigurationManager.<init>(SourceFile:11) at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:105) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:378) at net.minecraft.server.ThreadServerApplication.run(SourceFile:539) Caused by: while scanning for the next token found character '\t' that cannot start any token in "<reader>", line 8, column 2: usage: /<command> ^ at org.yaml.snakeyaml.scanner.ScannerImpl.fetchMoreTokens(ScannerImpl.java:358) at org.yaml.snakeyaml.scanner.ScannerImpl.checkToken(ScannerImpl.java:179) at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:563) at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:161) at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:146) at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230) at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160) at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237) at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160) at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:237) at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160) at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:123) at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:106) at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:121) at org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:480) at org.yaml.snakeyaml.Yaml.load(Yaml.java:411) at org.bukkit.plugin.PluginDescriptionFile.<init>(PluginDescriptionFile.java:42) at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:202) ... 8 more
frankweslar mag diesen Beitrag