Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.57 KB | None | 0 0
  1. package tv.rewinside.antihacks;
  2.  
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.UUID;
  6. import lombok.Getter;
  7. import net.minecraft.server.MinecraftServer;
  8. import org.bukkit.Bukkit;
  9. import org.bukkit.entity.Player;
  10. import org.bukkit.plugin.java.JavaPlugin;
  11. import tv.rewinside.CloudConnector.CloudConnectorPlugin;
  12. import tv.rewinside.MinigameAPI.Config;
  13. import tv.rewinside.MinigameAPI.MinigameAPI;
  14. import tv.rewinside.antihacks.armor.AutoArmorChecker;
  15. import tv.rewinside.antihacks.armor.AutoArmorListener;
  16. import tv.rewinside.antihacks.armor.AutoArmorTimer;
  17. import tv.rewinside.antihacks.autoclicker.ClickCounterTask;
  18. import tv.rewinside.antihacks.command.ClickWatcherCommand;
  19. import tv.rewinside.antihacks.fly.FlyNoCheat;
  20. import tv.rewinside.antihacks.jesus.JesusChecker;
  21. import tv.rewinside.antihacks.killaura.KillauraChecker;
  22. import tv.rewinside.antihacks.killaura.KillauraListener;
  23. import tv.rewinside.antihacks.knockback.KnockbackChecker;
  24. import tv.rewinside.antihacks.knockback.KnockbackListener;
  25. import tv.rewinside.antihacks.spam.SpamChecker;
  26. import tv.rewinside.antihacks.step.StepChecker;
  27. import tv.rewinside.database.ban.DatabaseBan;
  28. import tv.rewinside.database.ban.DatabaseBanHistoryEntry;
  29. import tv.rewinside.database.bukkit.DatabasePlugin;
  30. import tv.rewinside.database.logging.BanLogData;
  31. import tv.rewinside.database.logging.DatabaseLogEntry;
  32. import tv.rewinside.database.logging.LogType;
  33. import tv.rewinside.database.permission.DatabaseGroup;
  34. import tv.rewinside.database.player.DatabaseOnlinePlayer;
  35. import tv.rewinside.database.player.DatabasePlayer;
  36.  
  37. public class AntiHacksPlugin extends JavaPlugin {
  38. @Getter private static AntiHacksPlugin instance;
  39. @Getter private static final String reportEslPrefix = "§8[§bRAC-ESL§8] ";
  40. @Getter private KnockbackChecker knockbackChecker;
  41. @Getter private KillauraChecker killauraChecker;
  42. @Getter private AutoArmorChecker autoArmorChecker;
  43. @Getter private StepChecker stepChecker;
  44. @Getter private FlyNoCheat flyNoCheat;
  45.  
  46. private KnockbackListener knockbackListener;
  47.  
  48. @Override
  49. public void onEnable() {
  50. instance = this;
  51.  
  52. this.getConfig().addDefault("AntiKnockback", false);
  53. this.getConfig().addDefault("AntiKillaura", false);
  54. this.getConfig().addDefault("FlyNoCheat", true);
  55. this.getConfig().addDefault("AntiJesus", true);
  56. this.getConfig().addDefault("AntiAutoArmor", true);
  57. this.getConfig().addDefault("AntiStep", true);
  58. this.getConfig().addDefault("AntiSpam", true);
  59. this.getConfig().addDefault("AntiAutoclick.enabled", false);
  60. this.getConfig().addDefault("AntiAutoclick.limit", 25.0);
  61. this.getConfig().options().copyDefaults(true);
  62. this.saveConfig();
  63. this.reloadConfig();
  64.  
  65. if (this.getConfig().getBoolean("AntiKnockback")) {
  66. this.getLogger().info("Enabled Anti Knockback!");
  67. this.knockbackChecker = new KnockbackChecker();
  68. this.knockbackListener = new KnockbackListener(this.knockbackChecker);
  69.  
  70. MinecraftServer.getServer().getPacketManager().addListener(this.knockbackListener);
  71. Bukkit.getPluginManager().registerEvents(this.knockbackListener, this);
  72. }
  73.  
  74. if (this.getConfig().getBoolean("AntiKillaura")) {
  75. this.getLogger().info("Enabled Anti Killaura!");
  76. this.killauraChecker = new KillauraChecker();
  77. MinecraftServer.getServer().getPacketManager().addListener(this.killauraChecker);
  78. this.getServer().getPluginManager().registerEvents(new KillauraListener(), this);
  79. }
  80.  
  81. if (this.getConfig().getBoolean("FlyNoCheat")) {
  82. this.getLogger().info("Enabled fly no-cheat!");
  83. this.getServer().getPluginManager().registerEvents(this.flyNoCheat = new FlyNoCheat(), this);
  84. }
  85.  
  86. if (this.getConfig().getBoolean("AntiJesus")) {
  87. this.getLogger().info("Enabled Anti Jesus!");
  88. Bukkit.getPluginManager().registerEvents(new JesusChecker(), this);
  89. }
  90.  
  91. if (this.getConfig().getBoolean("AntiAutoArmor")) {
  92. this.getLogger().info("Enabled Anti Auto-Armor!");
  93. this.autoArmorChecker = new AutoArmorChecker();
  94. Bukkit.getPluginManager().registerEvents(new AutoArmorListener(this.autoArmorChecker), this);
  95. Bukkit.getScheduler().runTaskTimer(this, new AutoArmorTimer(this.autoArmorChecker), 200L, 200L);
  96. }
  97.  
  98. if (this.getConfig().getBoolean("AntiStep")) {
  99. this.getLogger().info("Enabled Anti Step!");
  100. this.stepChecker = new StepChecker();
  101. Bukkit.getPluginManager().registerEvents(this.stepChecker, this);
  102. MinecraftServer.getServer().getPacketManager().addListener(this.stepChecker);
  103. }
  104.  
  105. if (this.getConfig().getBoolean("AntiSpam")) {
  106. this.getLogger().info("Enabled Anti Spam!");
  107. Bukkit.getPluginManager().registerEvents(new SpamChecker(), this);
  108. }
  109.  
  110. if (this.getConfig().getBoolean("AntiAutoclick.enabled")) {
  111. this.getLogger().info("Enabled Anti Autoclicker!");
  112. ClickCounterTask.HACKER_CLICK_LIMIT = this.getConfig().getDouble("AntiAutoclick.limit");
  113. Bukkit.getScheduler().runTaskTimerAsynchronously(this, new ClickCounterTask(), 0, 20);
  114. }
  115.  
  116. //clickwatcher command & quit listener
  117. ClickWatcherCommand clickWatcherCommand = new ClickWatcherCommand();
  118. this.getCommand("clickwatcher").setExecutor(clickWatcherCommand);
  119. Bukkit.getPluginManager().registerEvents(clickWatcherCommand, this);
  120. }
  121.  
  122. @Override
  123. public void onDisable() {
  124. Bukkit.getScheduler().cancelTasks(this);
  125.  
  126. if (this.knockbackListener != null)
  127. MinecraftServer.getServer().getPacketManager().removeListener(this.knockbackListener);
  128. if (this.stepChecker != null)
  129. MinecraftServer.getServer().getPacketManager().removeListener(this.stepChecker);
  130. }
  131.  
  132. public boolean shouldCheck(Player player) {
  133. DatabaseGroup group = (DatabaseGroup) player.getExtraData().get("group");
  134. return ((group.getGroupId() == 0 || group.getGroupId() == 7 || group.getGroupId() == 9) && !this.isSpectator(player) && this.isGameStarted());
  135. }
  136.  
  137. public boolean isGameStarted() {
  138. if (Bukkit.getPluginManager().isPluginEnabled("MinigameAPI")) {
  139. return MinigameAPI.getInstance().isGameStarted();
  140. }
  141. return false;
  142. }
  143.  
  144. public boolean isSpectator(Player player) {
  145. if (!Bukkit.getPluginManager().isPluginEnabled("MinigameAPI")) {
  146. return false;
  147. }
  148. return MinigameAPI.getInstance().isSpectator(player);
  149. }
  150.  
  151. public List<Player> getIngamePlayers() {
  152. if (!Bukkit.getPluginManager().isPluginEnabled("MinigameAPI")) {
  153. return (List<Player>) Bukkit.getOnlinePlayers();
  154. }
  155. return MinigameAPI.getInstance().getIngamePlayers();
  156. }
  157.  
  158. public void banPlayerWithDelay(final String uuid, final String banner) {
  159. int delay = (int) (Math.random() * 40 + 15);
  160. Player player = Bukkit.getPlayer(UUID.fromString(uuid));
  161. if (player != null) {
  162. if (player.getExtraData().containsKey("DelayBan")) return;
  163. player.getExtraData().put("DelayBan", System.currentTimeMillis() + delay * 1000);
  164. }
  165.  
  166. Bukkit.getScheduler().runTaskLater(this, () -> {
  167. AntiHacksPlugin.this.banPlayer(uuid, banner);
  168. }, delay * 20L);
  169. }
  170.  
  171. public void banPlayer(final String uuid, final String banner) {
  172. DatabasePlugin.getInstance().getAsync().runDatabaseAction(() -> {
  173. final DatabasePlayer dbPlayer = DatabasePlugin.getInstance().getConnection().getPlayer(uuid, DatabasePlayer.AccessRule.GROUP, DatabasePlayer.AccessRule.LAST_NAME, DatabasePlayer.AccessRule.BAN_POINTS);
  174.  
  175. if (dbPlayer == null || (dbPlayer.getGroup().getGroupId() != 0 && dbPlayer.getGroup().getGroupId() != 7 && dbPlayer.getGroup().getGroupId() != 9)) {
  176. return;
  177. }
  178.  
  179. final DatabaseOnlinePlayer dbOnline = DatabasePlugin.getInstance().getConnection().getOnlinePlayerFromUUID(dbPlayer.getUUID(), DatabaseOnlinePlayer.AccessRule.BUNGEECORD_ID);
  180.  
  181. final DatabaseBan ban = new DatabaseBan();
  182. ban.setUUID(uuid);
  183. ban.setStartTime(System.currentTimeMillis());
  184. ban.setBanPoint(dbPlayer.getBanPoints() + 720L);
  185. ban.setReason(0);
  186. ban.setBanner(banner);
  187. if (Bukkit.getPluginManager().isPluginEnabled("MinigameAPI")) {
  188. ban.setExtraMessage(MinigameAPI.getInstance().getGameLog().getId());
  189. }
  190. ban.setDuration(720L * 60L * 60L * 1000L + ((dbPlayer.getBanPoints() * 60L * 60L * 1000L) / 2));
  191.  
  192. DatabaseBan dbBan = DatabasePlugin.getInstance().getConnection().getBanFromPlayer(uuid, DatabaseBan.AccessRule.REASON);
  193. if (dbBan != null && dbBan.getReason().equals(ban.getReason())) {
  194. return;
  195. }
  196. DatabasePlugin.getInstance().getConnection().setBan(ban);
  197.  
  198. DatabaseLogEntry logEntry = new DatabaseLogEntry(LogType.BAN, banner, System.currentTimeMillis(), new BanLogData(ban.getReason(), uuid));
  199. DatabasePlugin.getInstance().getConnection().addLogEntry(logEntry);
  200.  
  201. {
  202. DatabaseBanHistoryEntry historyEntry = new DatabaseBanHistoryEntry();
  203. historyEntry.loadFromBan(ban);
  204. historyEntry.setType(DatabaseBanHistoryEntry.BanType.BAN);
  205.  
  206. DatabasePlugin.getInstance().getConnection().addBanHistory(historyEntry);
  207. }
  208.  
  209. dbPlayer.setBanPoints(dbPlayer.getBanPoints() + 720);
  210. DatabasePlugin.getInstance().getConnection().updatePlayer(dbPlayer, DatabasePlayer.AccessRule.BAN_POINTS);
  211.  
  212. StringBuilder sb = new StringBuilder();
  213. sb.append("§cDu wurdest vom rewinside Netzwerk gebannt.").append("\n");
  214.  
  215. if (Bukkit.getPluginManager().isPluginEnabled("MinigameAPI")) {
  216. sb.append("§cGrund: §aCLIENTMODS (").append(MinigameAPI.getInstance().getGameLog().getId()).append(")");
  217. } else {
  218. sb.append("§cGrund: §aCLIENTMODS");
  219. }
  220.  
  221. sb.append("\n\n");
  222. sb.append("§eDu kannst auf §arewinsi.de/unban §eeinen Entbannungsantrag stellen.");
  223.  
  224. CloudConnectorPlugin.getInstance().kickPlayer(dbPlayer.getLastName(), sb.toString());
  225.  
  226. if (Bukkit.getPluginManager().isPluginEnabled("MinigameAPI")) {
  227. CloudConnectorPlugin.getInstance().broadcastMessage(AntiHacksPlugin.getBanPrefix() + "§a" + banner + " §7hat §c" + dbPlayer.getLastName() + " §7mit dem Grund §cCLIENTMODS (" + MinigameAPI.getInstance().getGameLog().getId() + ") §7vom Server gebannt.", "bungee.announce.ban");
  228. } else {
  229. CloudConnectorPlugin.getInstance().broadcastMessage(AntiHacksPlugin.getBanPrefix() + "§a" + banner + " §7hat §c" + dbPlayer.getLastName() + " §7mit dem Grund §cCLIENTMODS §7vom Server gebannt.", "bungee.announce.ban");
  230. }
  231.  
  232. CloudConnectorPlugin.getInstance().sendPayload(new String[] { dbOnline.getBungeeCordId() }, "RAC_triggerMultiaccountBan",
  233. new HashMap<String, Object>() {{
  234. put("UUID", dbPlayer.getUUID());
  235. }}
  236. );
  237. });
  238. }
  239.  
  240. public static String getReportPrefix() {
  241. if (!Config.ESL) {
  242. return "§8[§cRAC§8] ";
  243. } else {
  244. return "§8[§b§lRAC-ESL§r§8] ";
  245. }
  246. }
  247.  
  248. public static String getBanPrefix() {
  249. return "§8[§cRAC§8] ";
  250. }
  251.  
  252. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement