Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.71 KB | None | 0 0
  1. package rebirthxsavage.hcf.core.manager;
  2.  
  3. import rebirthxsavage.hcf.core.MainHCF;
  4. import rebirthxsavage.hcf.core.utils.Manager;
  5. import rebirthxsavage.hcf.core.utils.Utils;
  6. import java.lang.reflect.Field;
  7. import java.util.ArrayList;
  8. import java.util.Iterator;
  9. import java.util.List;
  10. import java.util.Map;
  11. import java.util.Map.Entry;
  12. import org.bukkit.Bukkit;
  13. import org.bukkit.ChatColor;
  14. import org.bukkit.Location;
  15. import org.bukkit.entity.Player;
  16. import org.bukkit.entity.Projectile;
  17. import org.bukkit.event.EventHandler;
  18. import org.bukkit.event.EventPriority;
  19. import org.bukkit.event.Listener;
  20. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  21. import org.bukkit.event.entity.EntityDamageEvent;
  22. import org.bukkit.event.entity.PotionSplashEvent;
  23. import org.bukkit.event.entity.ProjectileLaunchEvent;
  24. import org.bukkit.event.player.PlayerCommandPreprocessEvent;
  25. import org.bukkit.event.player.PlayerDropItemEvent;
  26. import org.bukkit.event.player.PlayerInteractEvent;
  27. import org.bukkit.event.player.PlayerKickEvent;
  28. import org.bukkit.event.player.PlayerMoveEvent;
  29. import org.bukkit.event.player.PlayerPickupItemEvent;
  30. import org.bukkit.event.player.PlayerQuitEvent;
  31. import org.bukkit.event.player.PlayerTeleportEvent;
  32.  
  33. public class FreezeManager
  34. extends Manager
  35. implements Listener
  36. {
  37. private List<Player> frozen;
  38. private List<Player> panic;
  39. boolean isEnableAutoban;
  40. public FreezeManager(MainHCF plugin)
  41. {
  42. super(plugin);
  43. this.frozen = new ArrayList<Player>();
  44. this.panic = new ArrayList<Player>();
  45. }
  46.  
  47. public void init()
  48. {
  49. getPlugin().getServer().getPluginManager().registerEvents(this, getPlugin());
  50. reload();
  51. }
  52. public void reload()
  53. {
  54. this.isEnableAutoban = this.getPlugin().getConfig().getBoolean("Freeze.Autoban.Enable");
  55. }
  56. public boolean isFrozen(Player player)
  57. {
  58. return this.frozen.contains(player);
  59. }
  60. public void addFreeze(Player player)
  61. {
  62. this.frozen.add(player);
  63. }
  64. public void removeFreeze(Player player)
  65. {
  66. if (this.isFrozen(player)){
  67. this.frozen.remove(player);
  68. }
  69. }
  70. public boolean isPanic(Player player)
  71. {
  72. return this.panic.contains(player);
  73. }
  74. public void addPanic(Player player)
  75. {
  76. this.panic.add(player);
  77. }
  78. public void removePanic(Player player)
  79. {
  80. if (this.isPanic(player)){
  81. this.panic.remove(player);
  82. }
  83. }
  84. @EventHandler
  85. public void onMove(PlayerMoveEvent event)
  86. {
  87. Location from = event.getFrom();
  88. Location to = event.getTo();
  89. if (((from.getX() != to.getX()) || (from.getZ() != to.getZ())) && (this.isFrozen(event.getPlayer()) || isPanic(event.getPlayer()))) {
  90. event.setTo(event.getFrom());
  91. }
  92. }
  93.  
  94. @SuppressWarnings("deprecation")
  95. @EventHandler
  96. public void onProjectileLaunch(ProjectileLaunchEvent event)
  97. {
  98. if (this.frozen.contains(event.getEntity().getShooter()) || this.panic.contains(event.getEntity().getShooter())) {
  99. event.setCancelled(true);
  100. }
  101. }
  102.  
  103. @SuppressWarnings("deprecation")
  104. @EventHandler
  105. public void onEntityDamageByEntity(EntityDamageByEntityEvent event)
  106. {
  107. if (event.getEntity() instanceof Player && event.getDamager() instanceof Player){
  108. if (this.frozen.contains(event.getEntity())) {
  109. Player player = (Player) event.getEntity();
  110. Player damager = (Player) event.getDamager();
  111. damager.sendMessage(Utils.getLocalized(null, "FREEZE.FREEZE_DAMAGER", new Object[0]).replace("<player>", player.getName()));
  112. event.setCancelled(true);
  113. }
  114. if (this.frozen.contains(event.getDamager())) {
  115. event.setCancelled(true);
  116. }
  117. if (this.panic.contains(event.getEntity())) {
  118. Player player = (Player) event.getEntity();
  119. Player damager = (Player) event.getDamager();
  120. damager.sendMessage(Utils.getLocalized(null, "PANIC.PANIC_DAMAGER", new Object[0]).replace("<player>", player.getName()));
  121. event.setCancelled(true);
  122. }
  123. if (this.panic.contains(event.getDamager())) {
  124. event.setCancelled(true);
  125. }
  126. }
  127. if ((event.getDamager() instanceof Projectile))
  128. {
  129. Projectile projectile1 = (Projectile)event.getDamager();
  130. if ((projectile1.getShooter() instanceof Player) && (event.getEntity() instanceof Player))
  131. {
  132. Player target = (Player)event.getEntity();
  133. Player player = (Player)projectile1.getShooter();
  134. if (this.frozen.contains(player) || this.frozen.contains(target)) {
  135. event.setCancelled(true);
  136. }
  137. if (this.panic.contains(player) || this.panic.contains(target)) {
  138. event.setCancelled(true);
  139. }
  140. }
  141. }
  142. }
  143. @EventHandler
  144. public void onEntityDamage(EntityDamageEvent event)
  145. {
  146. if (event.getEntity() instanceof Player){
  147. Player player = (Player) event.getEntity();
  148. if (this.isFrozen(player) || this.isPanic(player)){
  149. event.setCancelled(true);
  150. }
  151. }
  152. }
  153. @EventHandler
  154. public void onPlayerTelport(PlayerTeleportEvent event)
  155. {
  156. if ((event.getCause() == PlayerTeleportEvent.TeleportCause.ENDER_PEARL) && (this.frozen.contains(event.getPlayer())) || (this.panic.contains(event.getPlayer()))) {
  157. event.setTo(event.getFrom());
  158. }
  159. }
  160.  
  161. @EventHandler
  162. public void onSplash(PotionSplashEvent event)
  163. {
  164. if (!this.frozen.isEmpty()) {
  165. try
  166. {
  167. Field eventField = PotionSplashEvent.class.getDeclaredField("affectedEntities");
  168. eventField.setAccessible(true);
  169. Map<?, ?> affectedEntities = (Map<?, ?>) eventField.get(event);
  170. Iterator<?> iterator = affectedEntities.entrySet().iterator();
  171. while (iterator.hasNext())
  172. {
  173. Map.Entry<?, ?> entry = (Entry<?, ?>) iterator.next();
  174. if (this.frozen.contains(entry.getKey())) {
  175. iterator.remove();
  176. }
  177. if (this.panic.contains(entry.getKey())) {
  178. iterator.remove();
  179. }
  180. }
  181. eventField.set(event, affectedEntities);
  182. }
  183. catch (Exception localException) {}
  184. }
  185. }
  186.  
  187. @EventHandler
  188. public void onPlayerQuit(PlayerQuitEvent e)
  189. {
  190. if (this.frozen.contains(e.getPlayer()))
  191. {
  192. this.frozen.remove(e.getPlayer());
  193. if (this.isEnableAutoban){
  194. Player p = e.getPlayer();
  195. if(p.hasPermission("freeze.logout.alert"))
  196. Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "ban " + e.getPlayer().getName() + " " + Utils.getLocalized(null, "FREEZE.FREEZE_AUTOBAN_REASON", new Object[0]));
  197. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&7&m------------------------------------"));
  198. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', ""));
  199. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&c&lPlayer &4&l" + e.getPlayer().getName() + " &c&ldisconnected while he was frozen"));
  200. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', ""));
  201. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&7&m------------------------------------"));
  202. }
  203. }
  204. if (this.panic.contains(e.getPlayer()))
  205. {
  206. this.panic.remove(e.getPlayer());
  207. }
  208. }
  209.  
  210. @EventHandler
  211. public void onPlayerKick(PlayerKickEvent event)
  212. {
  213. if (this.frozen.contains(event.getPlayer())) {
  214. this.frozen.remove(event.getPlayer());
  215. }
  216. if (this.panic.contains(event.getPlayer())) {
  217. this.panic.remove(event.getPlayer());
  218. }
  219. }
  220.  
  221. @EventHandler
  222. public void onPickup(PlayerPickupItemEvent event)
  223. {
  224. if (this.frozen.contains(event.getPlayer()) || this.panic.contains(event.getPlayer())) {
  225. event.setCancelled(true);
  226. }
  227. }
  228.  
  229. @EventHandler
  230. public void onDrop(PlayerDropItemEvent event)
  231. {
  232. if (this.frozen.contains(event.getPlayer()) || this.panic.contains(event.getPlayer())) {
  233. event.setCancelled(true);
  234. }
  235. }
  236.  
  237. @EventHandler
  238. public void onInteract(PlayerInteractEvent event)
  239. {
  240. if (this.frozen.contains(event.getPlayer()) || this.panic.contains(event.getPlayer())) {
  241. event.setCancelled(true);
  242. }
  243. }
  244. @EventHandler(ignoreCancelled=true, priority=EventPriority.MONITOR)
  245. public void onCommandFreeze(PlayerCommandPreprocessEvent e) {
  246. if (this.isFrozen(e.getPlayer())) {
  247. List<String> restrict;
  248. String commandd = e.getMessage();
  249. String firstt = commandd.split(" ")[0];
  250. int index = firstt.indexOf(":");
  251. if (index != -1) {
  252. commandd = "/" + commandd.substring(index + 1, commandd.length());
  253. }
  254. if ((restrict = this.getPlugin().getConfig().getStringList("Freeze.Disable-commands")) != null) {
  255. for (String str : restrict) {
  256. if (e.getMessage().equalsIgnoreCase(str)){
  257. Utils.sendLocalized(e.getPlayer(), "FREEZE.FREEZE_BLOCK_CMD", new Object[0]);
  258. e.setCancelled(true);
  259. return;
  260. }
  261. }
  262. }
  263. }
  264. if (this.isPanic(e.getPlayer())) {
  265. List<String> restrictt;
  266. String commands = e.getMessage();
  267. String frst = commands.split(" ")[0];
  268. int indexx = frst.indexOf(":");
  269. if (indexx != -1) {
  270. commands = "/" + commands.substring(indexx + 1, commands.length());
  271. }
  272. if ((restrictt = this.getPlugin().getConfig().getStringList("Freeze.Disable-commands")) != null) {
  273. for (String strr : restrictt) {
  274. if (e.getMessage().equalsIgnoreCase(strr)){
  275. Utils.sendLocalized(e.getPlayer(), "PANIC.PANIC_BLOCK_CMD", new Object[0]);
  276. e.setCancelled(true);
  277. return;
  278. }
  279. }
  280. }
  281. }
  282. }
  283. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement