Advertisement
Guest User

Untitled

a guest
May 30th, 2016
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.95 KB | None | 0 0
  1. package me.hannibal2.ban;
  2.  
  3. import me.hannibal2.api.minecraft.SmartBungee;
  4. import me.hannibal2.api.minecraft.chat.ChatBuilder;
  5. import me.hannibal2.api.minecraft.uuidfetcher.UUIDFetcher;
  6. import me.hannibal2.api.smart.Smart;
  7. import me.hannibal2.api.smart.SmartList;
  8. import me.hannibal2.api.smart.SmartMySQL;
  9. import me.hannibal2.api.smart.SmartTime;
  10. import net.md_5.bungee.BungeeCord;
  11. import net.md_5.bungee.api.CommandSender;
  12. import net.md_5.bungee.api.chat.BaseComponent;
  13. import net.md_5.bungee.api.connection.ProxiedPlayer;
  14.  
  15. import java.util.UUID;
  16.  
  17. public class Ban {
  18.  
  19. private final UUID uuid;
  20. private final long duration;
  21. private final String reason;
  22. private final UUID by;
  23. private final long time;
  24. private final String address;
  25.  
  26. public Ban(UUID uuid, long duration, String reason, CommandSender sender, ProxiedPlayer p) {
  27. this(uuid, duration, reason, sender instanceof ProxiedPlayer ? ((ProxiedPlayer) sender).getUniqueId() : null, System.currentTimeMillis(), p != null ? SmartBungee.getAddress(p) : "");
  28. }
  29.  
  30. public Ban(UUID uuid, long duration, String reason, UUID by, long time, String address) {
  31. this.uuid = uuid;
  32. this.duration = duration;
  33. this.reason = reason;
  34. this.by = by;
  35. this.time = time;
  36. this.address = address;
  37.  
  38. ProxiedPlayer p = BungeeCord.getInstance().getPlayer(uuid);
  39. }
  40.  
  41. public void execute() {
  42. ProxiedPlayer p = BungeeCord.getInstance().getPlayer(uuid);
  43. boolean online = p != null;
  44. if (online) {
  45. p.disconnect(msgGetBanned());
  46. }
  47. BaseComponent[] publicBanMsg = msgNewBanPublic();
  48. SmartBungee.forAllPlayers(all -> all.sendMessage(publicBanMsg));
  49. SmartList<ProxiedPlayer> ipKick = new SmartList<>();
  50. if (isAddress()) {
  51. SmartBungee.forAllPlayers(all -> {
  52. if (all.getUniqueId().equals(uuid)) return;
  53. if (SmartBungee.getAddress(all).equals(address)) {
  54. ipKick.add(all);
  55. }
  56. });
  57. String s = msgGetIpBanned();
  58. ipKick.forEach(all -> {
  59. // all.disconnect(s);// TODO: 29.05.2016 einabuen
  60. });
  61. }
  62. BaseComponent[] teamBanMsg = msgNewBanTeam(ipKick, online);
  63. SmartBungee.forAllPlayers(all -> all.sendMessage(teamBanMsg));
  64. }
  65.  
  66. public void pardon(CommandSender sender, String pardonReason) {
  67. String name = SmartBungee.getName(sender);
  68. ChatBuilder builder = new ChatBuilder();
  69. builder.text(" = Ban System =").nL().nL();
  70. builder.suggest("Entbannter Spieler: " + getName(), getName()).nL();
  71. builder.suggest("Entbannt von: " + name, name).nL();
  72. if (!pardonReason.isEmpty()) {
  73. builder.suggest("Grund für entbannnung: " + pardonReason, pardonReason).nL();
  74. }
  75. builder.suggest("Ban-Datum: " + getDate(), getDate()).nL();
  76. builder.suggest("Ban-Grund: " + reason, reason).nL();
  77. builder.suggest("Ban-Dauer: " + getDuration(), getDuration()).nL();
  78. builder.suggest("Gebannt von: " + getBy(), getBy()).nL();
  79. if (isAddress()) {
  80. builder.suggest("Ban-Addresse: " + address, address).nL();
  81. }
  82. // SmartBungee.sendPerm(builder.create(), "ban");// TODO: 29.05.2016 perms
  83. SmartBungee.sendToAll(builder.create());
  84. delete();
  85. }
  86.  
  87. private BaseComponent[] msgNewBanTeam(SmartList<ProxiedPlayer> ipKick, boolean online) {
  88. ChatBuilder builder = new ChatBuilder();
  89. builder.text(" = &cBan System =").nL().nL();
  90. builder.suggest("Gebannter Spieler: " + getName() + (online ? " §a(war online)" : " §c(war offline)"), getName()).nL();
  91. builder.suggest("Grund: " + reason, reason).nL();
  92. builder.suggest("Dauer: " + getDuration(), getDuration()).nL();
  93. builder.suggest("Gebannt von: " + getBy(), getBy()).nL();
  94. if (isAddress()) {
  95. builder.suggest("Addresse: " + address, address).nL();
  96. }
  97. if (!ipKick.isEmpty()) {
  98. if (ipKick.length() == 1) {
  99. builder.text("Mitgebannt wurde: ");
  100. } else {
  101. builder.text("Mitgebannt wurden: ");
  102. }
  103. ipKick.forEach(all -> {
  104. String name = all.getName();
  105. builder.suggest(name, name).text(", ");
  106. });
  107. builder.nL();
  108. }
  109. builder.nL();
  110. return builder.create();
  111. }
  112.  
  113. private BaseComponent[] msgNewBanPublic() {
  114. ChatBuilder builder = new ChatBuilder();
  115. builder.text(" = Ban System =").nL().nL();
  116. String name = getName();
  117. builder.show("Gebannter Spieler: " + name, "Der Spieler " + name + " hat", "offensichtlich die Regeln gebrochen", "und wurde dafür gebannt").nL();
  118. builder.show("Grund: " + reason, "Die Begründugn für diesen Bann lautet: " + reason).nL();
  119. String durationText = "Dauer: " + getDuration();
  120. if (isPerma()) {
  121. builder.show(durationText, "Offensichtlich wurde " + name + " für immer gesperrt!").nL();
  122. } else {
  123. builder.show(durationText, "Für so lange muss " + name + " warten,", "um wieder auf dem Server spielen zu können").nL();
  124. }
  125. if (isConsole()) {
  126. builder.show("Gebannt von: " + getBy(), "Offensichtlich hat die Konsole " + name + " gebannt!").nL();
  127. } else {
  128. builder.show("Gebannt von: " + getBy(), getBy() + " hat " + name + " gebannt!").nL();
  129. }
  130. builder.nL();
  131. return builder.create();
  132. }
  133.  
  134. public BaseComponent[] msgInfoPlayer() {
  135. ChatBuilder builder = new ChatBuilder();
  136. builder.nL();
  137. builder.text(" = §cBan System =").nL();
  138. builder.suggest("Gebannter Spieler: " + getName(), getName()).nL();
  139. builder.suggest("Grund: " + reason, reason).nL();
  140. builder.suggest("Dauer: " + getDuration(), getDuration()).nL();
  141. builder.suggest("Gebannt von: " + getBy(), getBy()).nL();
  142. if (isAddress()) {
  143. builder.suggest("Addresse: " + address, address).nL();
  144. }
  145. if (!isPerma()) {
  146. builder.suggest("Verbleibende Zeit: " + getStayTime(), getStayTime()).nL();
  147. }
  148. builder.suggest("Datum: " + getDate(), getDate()).nL();
  149. return builder.create();
  150. }
  151.  
  152. public String msgInfoConsole() {
  153. StringBuilder builder = new StringBuilder();
  154. builder.append("\n = §cBan System =\n");
  155. builder.append("Gebannter Spieler: " + getName() + "\n");
  156. builder.append("Grund: " + reason + "\n");
  157. builder.append("Dauer: " + getDuration() + "\n");
  158. builder.append("Gebannt von: " + getBy() + "\n");
  159. if (isAddress()) {
  160. builder.append("Addresse: " + address + "\n");
  161. }
  162. if (!isPerma()) {
  163. builder.append("Verbleibende Zeit: " + getStayTime() + "\n");
  164. }
  165. builder.append("Datum: " + getDate());
  166. return builder.toString();
  167. }
  168.  
  169. private String msgGetBanned() {
  170. return "§cSkyCube Ban-System\n\n" +
  171. "&cDu wurdest gebannt!\n\n" +
  172. "§bGrund: " + getReason() + "\n" +
  173. "§bDauer: " + getDuration() + "\n" +
  174. "&bGebannt von: " + getBy();
  175. }
  176.  
  177. private String msgGetIpBanned() {
  178. return "Deine IP wurde gebannt!\n\n" +
  179. "Dauer: " + getDuration() + "\n" +
  180. "Grund: " + getName() + " wurde gebannt";
  181. }
  182.  
  183. public String msgIsBanned() {
  184. StringBuilder builder = new StringBuilder();
  185. builder.append("Du bist gebannt!\n\n");
  186. builder.append("Grund: " + getReason() + "\n");
  187. if (!isPerma()) {
  188. builder.append("Verbleibende Zeit: " + getStayTime() + "\n");
  189. }
  190. builder.append("Gebannt von: " + getBy() + "\n");
  191. builder.append("Dauer: " + getDuration());
  192. return builder.toString();
  193. }
  194.  
  195. public String msgIsIpBanned() {
  196. StringBuilder builder = new StringBuilder();
  197. builder.append("Deine IP ist gebannt!\n\n");
  198. builder.append("Grund: " + getName() + " wurde gebannt\n");
  199. if (isPerma()) {
  200. builder.append("Permanent/Lifetime");
  201. } else {
  202. builder.append("Verbleibende Zeit: " + getStayTime());
  203. }
  204. return builder.toString();
  205. }
  206.  
  207. private boolean isAddress() {
  208. return address != null && !address.equals("null");
  209. }
  210.  
  211. private String getDate() {
  212. return SmartTime.mom(time);
  213. }
  214.  
  215. private String getName() {
  216. return UUIDFetcher.getName(uuid);
  217. }
  218.  
  219. private String getReason() {
  220. return reason;
  221. }
  222.  
  223. private String getStayTime() {
  224. return Smart.timeDelayMilli(time + duration * 1000 - System.currentTimeMillis());
  225. }
  226.  
  227. private String getBy() {
  228. return isConsole() ? "Konsole" : UUIDFetcher.getName(by);
  229. }
  230.  
  231. private boolean isConsole() {
  232. return by == null;
  233. }
  234.  
  235. public String getDuration() {
  236. if (isPerma()) {
  237. return "Permanent/Lifetime";
  238. } else {
  239. return Smart.timeDelayMilli(duration * 1000);
  240. }
  241. }
  242.  
  243. private boolean isPerma() {
  244. return duration == -1;
  245. }
  246.  
  247. public void save() {
  248. SmartMySQL.Table table = Main.getInstance().getTable();
  249. SmartMySQL.InputManager inputManager = table.add("uuid", this.uuid);
  250. inputManager.add("name", UUIDFetcher.getName(this.uuid));
  251. inputManager.add("duration", duration);
  252. inputManager.add("reason", reason);
  253. inputManager.add("executor", by);
  254. inputManager.add("time", time);
  255. inputManager.add("address", address);
  256. inputManager.insert();
  257. }
  258.  
  259. private void delete() {
  260. SmartMySQL.Table table = Main.getInstance().getTable();
  261. table.delete("uuid", this.uuid);
  262. }
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement