Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.hannibal2.ban;
- import me.hannibal2.api.minecraft.SmartBungee;
- import me.hannibal2.api.minecraft.chat.ChatBuilder;
- import me.hannibal2.api.minecraft.uuidfetcher.UUIDFetcher;
- import me.hannibal2.api.smart.Smart;
- import me.hannibal2.api.smart.SmartList;
- import me.hannibal2.api.smart.SmartMySQL;
- import me.hannibal2.api.smart.SmartTime;
- import net.md_5.bungee.BungeeCord;
- import net.md_5.bungee.api.CommandSender;
- import net.md_5.bungee.api.chat.BaseComponent;
- import net.md_5.bungee.api.connection.ProxiedPlayer;
- import java.util.UUID;
- public class Ban {
- private final UUID uuid;
- private final long duration;
- private final String reason;
- private final UUID by;
- private final long time;
- private final String address;
- public Ban(UUID uuid, long duration, String reason, CommandSender sender, ProxiedPlayer p) {
- this(uuid, duration, reason, sender instanceof ProxiedPlayer ? ((ProxiedPlayer) sender).getUniqueId() : null, System.currentTimeMillis(), p != null ? SmartBungee.getAddress(p) : "");
- }
- public Ban(UUID uuid, long duration, String reason, UUID by, long time, String address) {
- this.uuid = uuid;
- this.duration = duration;
- this.reason = reason;
- this.by = by;
- this.time = time;
- this.address = address;
- ProxiedPlayer p = BungeeCord.getInstance().getPlayer(uuid);
- }
- public void execute() {
- ProxiedPlayer p = BungeeCord.getInstance().getPlayer(uuid);
- boolean online = p != null;
- if (online) {
- p.disconnect(msgGetBanned());
- }
- BaseComponent[] publicBanMsg = msgNewBanPublic();
- SmartBungee.forAllPlayers(all -> all.sendMessage(publicBanMsg));
- SmartList<ProxiedPlayer> ipKick = new SmartList<>();
- if (isAddress()) {
- SmartBungee.forAllPlayers(all -> {
- if (all.getUniqueId().equals(uuid)) return;
- if (SmartBungee.getAddress(all).equals(address)) {
- ipKick.add(all);
- }
- });
- String s = msgGetIpBanned();
- ipKick.forEach(all -> {
- // all.disconnect(s);// TODO: 29.05.2016 einabuen
- });
- }
- BaseComponent[] teamBanMsg = msgNewBanTeam(ipKick, online);
- SmartBungee.forAllPlayers(all -> all.sendMessage(teamBanMsg));
- }
- public void pardon(CommandSender sender, String pardonReason) {
- String name = SmartBungee.getName(sender);
- ChatBuilder builder = new ChatBuilder();
- builder.text(" = Ban System =").nL().nL();
- builder.suggest("Entbannter Spieler: " + getName(), getName()).nL();
- builder.suggest("Entbannt von: " + name, name).nL();
- if (!pardonReason.isEmpty()) {
- builder.suggest("Grund für entbannnung: " + pardonReason, pardonReason).nL();
- }
- builder.suggest("Ban-Datum: " + getDate(), getDate()).nL();
- builder.suggest("Ban-Grund: " + reason, reason).nL();
- builder.suggest("Ban-Dauer: " + getDuration(), getDuration()).nL();
- builder.suggest("Gebannt von: " + getBy(), getBy()).nL();
- if (isAddress()) {
- builder.suggest("Ban-Addresse: " + address, address).nL();
- }
- // SmartBungee.sendPerm(builder.create(), "ban");// TODO: 29.05.2016 perms
- SmartBungee.sendToAll(builder.create());
- delete();
- }
- private BaseComponent[] msgNewBanTeam(SmartList<ProxiedPlayer> ipKick, boolean online) {
- ChatBuilder builder = new ChatBuilder();
- builder.text(" = &cBan System =").nL().nL();
- builder.suggest("Gebannter Spieler: " + getName() + (online ? " §a(war online)" : " §c(war offline)"), getName()).nL();
- builder.suggest("Grund: " + reason, reason).nL();
- builder.suggest("Dauer: " + getDuration(), getDuration()).nL();
- builder.suggest("Gebannt von: " + getBy(), getBy()).nL();
- if (isAddress()) {
- builder.suggest("Addresse: " + address, address).nL();
- }
- if (!ipKick.isEmpty()) {
- if (ipKick.length() == 1) {
- builder.text("Mitgebannt wurde: ");
- } else {
- builder.text("Mitgebannt wurden: ");
- }
- ipKick.forEach(all -> {
- String name = all.getName();
- builder.suggest(name, name).text(", ");
- });
- builder.nL();
- }
- builder.nL();
- return builder.create();
- }
- private BaseComponent[] msgNewBanPublic() {
- ChatBuilder builder = new ChatBuilder();
- builder.text(" = Ban System =").nL().nL();
- String name = getName();
- builder.show("Gebannter Spieler: " + name, "Der Spieler " + name + " hat", "offensichtlich die Regeln gebrochen", "und wurde dafür gebannt").nL();
- builder.show("Grund: " + reason, "Die Begründugn für diesen Bann lautet: " + reason).nL();
- String durationText = "Dauer: " + getDuration();
- if (isPerma()) {
- builder.show(durationText, "Offensichtlich wurde " + name + " für immer gesperrt!").nL();
- } else {
- builder.show(durationText, "Für so lange muss " + name + " warten,", "um wieder auf dem Server spielen zu können").nL();
- }
- if (isConsole()) {
- builder.show("Gebannt von: " + getBy(), "Offensichtlich hat die Konsole " + name + " gebannt!").nL();
- } else {
- builder.show("Gebannt von: " + getBy(), getBy() + " hat " + name + " gebannt!").nL();
- }
- builder.nL();
- return builder.create();
- }
- public BaseComponent[] msgInfoPlayer() {
- ChatBuilder builder = new ChatBuilder();
- builder.nL();
- builder.text(" = §cBan System =").nL();
- builder.suggest("Gebannter Spieler: " + getName(), getName()).nL();
- builder.suggest("Grund: " + reason, reason).nL();
- builder.suggest("Dauer: " + getDuration(), getDuration()).nL();
- builder.suggest("Gebannt von: " + getBy(), getBy()).nL();
- if (isAddress()) {
- builder.suggest("Addresse: " + address, address).nL();
- }
- if (!isPerma()) {
- builder.suggest("Verbleibende Zeit: " + getStayTime(), getStayTime()).nL();
- }
- builder.suggest("Datum: " + getDate(), getDate()).nL();
- return builder.create();
- }
- public String msgInfoConsole() {
- StringBuilder builder = new StringBuilder();
- builder.append("\n = §cBan System =\n");
- builder.append("Gebannter Spieler: " + getName() + "\n");
- builder.append("Grund: " + reason + "\n");
- builder.append("Dauer: " + getDuration() + "\n");
- builder.append("Gebannt von: " + getBy() + "\n");
- if (isAddress()) {
- builder.append("Addresse: " + address + "\n");
- }
- if (!isPerma()) {
- builder.append("Verbleibende Zeit: " + getStayTime() + "\n");
- }
- builder.append("Datum: " + getDate());
- return builder.toString();
- }
- private String msgGetBanned() {
- return "§cSkyCube Ban-System\n\n" +
- "&cDu wurdest gebannt!\n\n" +
- "§bGrund: " + getReason() + "\n" +
- "§bDauer: " + getDuration() + "\n" +
- "&bGebannt von: " + getBy();
- }
- private String msgGetIpBanned() {
- return "Deine IP wurde gebannt!\n\n" +
- "Dauer: " + getDuration() + "\n" +
- "Grund: " + getName() + " wurde gebannt";
- }
- public String msgIsBanned() {
- StringBuilder builder = new StringBuilder();
- builder.append("Du bist gebannt!\n\n");
- builder.append("Grund: " + getReason() + "\n");
- if (!isPerma()) {
- builder.append("Verbleibende Zeit: " + getStayTime() + "\n");
- }
- builder.append("Gebannt von: " + getBy() + "\n");
- builder.append("Dauer: " + getDuration());
- return builder.toString();
- }
- public String msgIsIpBanned() {
- StringBuilder builder = new StringBuilder();
- builder.append("Deine IP ist gebannt!\n\n");
- builder.append("Grund: " + getName() + " wurde gebannt\n");
- if (isPerma()) {
- builder.append("Permanent/Lifetime");
- } else {
- builder.append("Verbleibende Zeit: " + getStayTime());
- }
- return builder.toString();
- }
- private boolean isAddress() {
- return address != null && !address.equals("null");
- }
- private String getDate() {
- return SmartTime.mom(time);
- }
- private String getName() {
- return UUIDFetcher.getName(uuid);
- }
- private String getReason() {
- return reason;
- }
- private String getStayTime() {
- return Smart.timeDelayMilli(time + duration * 1000 - System.currentTimeMillis());
- }
- private String getBy() {
- return isConsole() ? "Konsole" : UUIDFetcher.getName(by);
- }
- private boolean isConsole() {
- return by == null;
- }
- public String getDuration() {
- if (isPerma()) {
- return "Permanent/Lifetime";
- } else {
- return Smart.timeDelayMilli(duration * 1000);
- }
- }
- private boolean isPerma() {
- return duration == -1;
- }
- public void save() {
- SmartMySQL.Table table = Main.getInstance().getTable();
- SmartMySQL.InputManager inputManager = table.add("uuid", this.uuid);
- inputManager.add("name", UUIDFetcher.getName(this.uuid));
- inputManager.add("duration", duration);
- inputManager.add("reason", reason);
- inputManager.add("executor", by);
- inputManager.add("time", time);
- inputManager.add("address", address);
- inputManager.insert();
- }
- private void delete() {
- SmartMySQL.Table table = Main.getInstance().getTable();
- table.delete("uuid", this.uuid);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement