crafterjuli
Minecrafter
Hey,
ich habe ein Problem beim Programmieren eines BanSystems. Wenn ich jemanden 2 Stunde bannen will, kommen Rechenprobleme auf.
Hier mal mein Code meiner Methode:
Und hier wie ich sie anwende:
Jetzt meine Frage:
Habe ich dort irgendwelche Rechenfehler drin oder wie? Ich weiss nicht, was ich falsch mache.
Beispiel als Fehler:
Ich banne jemanden am 6.11.2015 für 30 tage und er wird dann nur bis zum 18.11.2015 gebannt.
ich habe ein Problem beim Programmieren eines BanSystems. Wenn ich jemanden 2 Stunde bannen will, kommen Rechenprobleme auf.
Hier mal mein Code meiner Methode:
Code:
public static void ban(String playername, String uuid, String reason, int seconds) {
long end = 0;
if (seconds == -1) {
end = -1;
cfg.set("Bans." + uuid + ".End", end);
cfg.set("Bans." + uuid + ".Reason", reason);
cfg.set("Bans." + uuid + ".Playername", playername);
try {
cfg.save(file);
} catch (IOException e) {
e.printStackTrace();
}
if (Bukkit.getPlayer(playername) != null) {
Bukkit.getPlayer(playername)
.kickPlayer("§cDu wurdest gebannt!" + "\n" + "\n" + "§aGrund: §e" + getReason(uuid) + "\n"
+ "§cGebannt bis: §4permanent" + "\n" + "\n"
+ "§aDu kannst auf §eendercake.com §aeinen Entbannungsantrag stellen.");
}
return;
}
long current = System.currentTimeMillis();
long millis = seconds * 1000;
end = current + millis;
cfg.set("Bans." + uuid + ".End", end);
cfg.set("Bans." + uuid + ".Reason", reason);
cfg.set("Bans." + uuid + ".Playername", playername);
try {
cfg.save(file);
} catch (IOException e) {
e.printStackTrace();
}
if (Bukkit.getPlayer(playername) != null) {
Bukkit.getPlayer(playername)
.kickPlayer("§cDu wurdest gebannt!" + "\n" + "\n" + "§aGrund: §e" + getReason(uuid) + "\n"
+ "§cGebannt bis: : §e" + getRemainingTime(uuid) + "\n" + "\n"
+ "§aDu kannst auf §eendercake.com §aeinen Entbannungsantrag stellen.");
}
}
Code:
try
{
int seconds = Integer.parseInt(args[1]);
String timeUnit = args[2];
if (seconds == -1) {
if (p.hasPermission("banmanager.permaban")) {
BanMethods.ban(target.getName(), target.getUniqueId().toString(), reason, seconds);
p.sendMessage("§7[§cBan§7] §6Spieler gebannt!");
p.playSound(p.getLocation(), Sound.WITHER_DEATH, 3, 2);
return true;
} else {
p.sendMessage("§7[§cBan§7] §cDu hast keine Rechte, Spieler permanent zu bannen!");
}
}
if (timeUnit.equalsIgnoreCase("sec")) {
BanMethods.ban(target.getName(), target.getUniqueId().toString(), reason, seconds);
} else if (timeUnit.equalsIgnoreCase("min")) {
BanMethods.ban(target.getName(), target.getUniqueId().toString(), reason, seconds * 60);
} else if (timeUnit.equalsIgnoreCase("hour")) {
BanMethods.ban(target.getName(), target.getUniqueId().toString(), reason, seconds * 60 * 60);
} else if (timeUnit.equalsIgnoreCase("day")) {
BanMethods.ban(target.getName(), target.getUniqueId().toString(), reason, seconds * 24 * 60 * 60);
} else {
p.sendMessage("§7[§cBan§7] §cUnbekannte Zeiteinheit!");
return true;
}
p.sendMessage("§7[§cBan§7] §6Spieler gebannt!");
p.playSound(p.getLocation(), Sound.WITHER_DEATH, 3, 2);
} catch(
NumberFormatException e)
{
p.sendMessage("§7[§cBan§7] §cBitte gebe nur Zahlen an!");
p.sendMessage("§7[§cBan§7] §6Vewende: §7/ban <Spielername> <Zahl> <Zeiteinheit> <Grund>");
}
Jetzt meine Frage:
Habe ich dort irgendwelche Rechenfehler drin oder wie? Ich weiss nicht, was ich falsch mache.
Beispiel als Fehler:
Ich banne jemanden am 6.11.2015 für 30 tage und er wird dann nur bis zum 18.11.2015 gebannt.