Failcrafter1998 Posted April 22, 2017 Share Posted April 22, 2017 Guten Tag Liebe Community, ich arbeite momentan an einem kleinen Pluign und habe folgendes Problem: Bei einem meiner Plugin Commands gibt es ein Cooldown und die Nachricht wird durch die Config abgerufen und dort soll %cooldown% mit dem Countdown ersetzt werden. Das Problem ist wenn ich dies mit der replace Funktion versuche bekomme ich einen Error das Int's nicht erlaubt sind. Mir ist bis jetzt kein andere Weg eingefallen, und frage deshalb jetzt euch nach einer Lösung. Hier mein Code: if(this.time.containsKey(commandSender.getName())) { long diff = (System.currentTimeMillis() - ((Long)this.time.get(commandSender.getName())).longValue()) / 1000L / 60L; this.Cooldown = this.getConfig().getInt("settings.cooldown"); if(diff < this.Cooldown) { String cooldownmsg = this.getConfig().getString("messages.cooldown"); cooldownmsg = cooldownmsg.replace("%cooldown%", this.Cooldown - diff); commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', cooldownmsg)); return true; } } Link to comment Share on other sites More sharing options...
Baustein Posted April 22, 2017 Share Posted April 22, 2017 cooldownmsg = cooldownmsg.replace("%cooldown%", this.Cooldown - diff + ""); Die Methode braucht einen String, also mach einfach nen String draus Liebe Grüße, Baustein Link to comment Share on other sites More sharing options...
Failcrafter1998 Posted May 13, 2017 Author Share Posted May 13, 2017 So eine weitere Frage: Ich möchte gerne den Befehl mit verschiedenen Args versehen. Mein Probleme ist jetzt wenn ich /argstest msg [Text] eingebe bekomme ich einen Error. Der Text hinter msg soll als Nachricht für alle Spieler ausgeben werden. Hier mein Code: public boolean onCommand (CommandSender sender, Command cmd, String cmdLabel, String [] args ) { if(cmd.getName().equalsIgnoreCase("argstest")) { if(!( sender instanceof Player)) { ConsoleCommandSender c = (ConsoleCommandSender) sender; c.sendMessage(ChatColor.translateAlternateColorCodes('&',this.getConfig().getString("messages.prefix") + this.getConfig().getString("messages.console"))); } else { Player commandSender = (Player) sender; if(!(commandSender.hasPermission("test.test"))) { String noperm = this.getConfig().getString("messages.noperm"); commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("messages.prefix") + noperm)); return true; } if(this.time.containsKey(commandSender.getName())) { long diff = (System.currentTimeMillis() - ((Long)this.time.get(commandSender.getName())).longValue()) / 1000L / 60L; this.Cooldown = this.getConfig().getInt("settings.cooldown"); if(diff < this.Cooldown) { String cooldownmsg = this.getConfig().getString("messages.cooldown"); cooldownmsg = cooldownmsg.replace("%cooldown%", this.Cooldown - diff + ""); commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("messages.prefix") + cooldownmsg)); return true; } } if(commandSender.hasPermission("test.test")) { if(args.length == 0) { commandSender.sendMessage("Keine Args!"); return true; } else if(args.length == 1) { if(args[0].equalsIgnoreCase("msg")) { if(args[1].length() >= 1 ) { if(eco.has(commandSender, this.getConfig().getInt("settings.costs"))) { StringBuilder text = new StringBuilder(); for(int i = 0 ; i < args.length ; i++) { text.append(args[i]).append(" "); } String ad = this.getConfig().getString("messages.ad"); ad = ad.replace("%player%", commandSender.getName()); Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', ad + text.toString())); String withdraw = this.getConfig().getString("messages.moneywithdraw"); withdraw = withdraw.replace("%costs%", this.getConfig().getInt("settings.costs") + ""); eco.withdrawPlayer(commandSender, this.getConfig().getInt("settings.costs")); commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("messages.prefix") + withdraw)); this.time.put(commandSender.getName(), Long.valueOf(System.currentTimeMillis())); return true; } else { commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("messages.prefix") + this.getConfig().getString("messages.nomoney"))); } } else { commandSender.sendMessage(ChatColor.translateAlternateColorCodes('&', this.getConfig().getString("messages.prefix") + this.getConfig().getString("messages.notext"))); } } else { commandSender.sendMessage("Bitte nutze einen Richtigen Arg´´"); return true; } } } } } return false; } } Link to comment Share on other sites More sharing options...
Baustein Posted May 13, 2017 Share Posted May 13, 2017 Nimm's mir nicht krumm, ich habe mir deinen Code nicht komplett durchgelesen, weil ich schon mitten drin Krämpfe bekommen habe "bekomme ich einen Error". Errors sind toll. Denn im allerwahrscheinlichsten Fall bekommst du einen stacktrace. Und dieser - halt dich fest - hilft dir, das Problem zu lösen, weil er exakt sagt, was falsch ist. Es ist also durchaus sinnvoll, wenn du uns diesen stacktrace schickst. hier mal zwei Code-Fehler, die ich beim Überfliegen sah, soweit wie ich bei Erhaltung meiner körperlichen Gesundheit kam: ConsoleCommandSender c = (ConsoleCommandSender) sender; komplett sinnfrei. Nimm einfach gleich sender.sendMessage("bla"); wenn (args.length == 1) zutrifft, kann args[1] nicht existieren, also geht auch args[1].length() nicht und wird dir eine Exception werfen. Ich hoffe, dass du uns mit dem stacktrace aushelfen kannst. Generell würde ich nochmal empfehlen, über die Java-Grundlagen zu schauen. Liebe Grüße, Baustein Link to comment Share on other sites More sharing options...
Failcrafter1998 Posted May 13, 2017 Author Share Posted May 13, 2017 (edited) Der Fehler kommt sobald ich nur /argstest msg ausführe. Gebe ich /argstest msg [Text] ein passiert gar nichts außer das /argstest ausgeben wird Hier der stacktrace: [14:27:55] [Server thread/INFO]: Failcrafter1998 issued server command: /argstest msg [14:27:55] [Server thread/ERROR]: null org.bukkit.command.CommandException: Unhandled exception executing command 'argstest' in plugin test v1.3 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[Spigot-1.11.jar:git-Paper-1079] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[Spigot-1.11.jar:git-Paper-1079] at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchCommand(CraftServer.java:675) ~[Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.PlayerConnection.handleCommand(PlayerConnection.java:1392) ~[Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1197) ~[Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:14) ~[Spigot-1.11.jar:git-Paper-1079] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_121] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_121] at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:830) [Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:403) [Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:754) [Spigot-1.11.jar:git-Paper-1079] at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:652) [Spigot-1.11.jar:git-Paper-1079] at java.lang.Thread.run(Unknown Source) [?:1.8.0_121] Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at testplugin.commands.test.onCommand(test.java:53) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[Spigot-1.11.jar:git-Paper-1079] ... 15 more Edited May 13, 2017 by Failcrafter1998 Link to comment Share on other sites More sharing options...
Baustein Posted May 13, 2017 Share Posted May 13, 2017 Den Fehler habe ich bereits in meinem vorigen Post erklärt (Punkt 3). Liebe Grüße, Baustein Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now