Advertisement
Guest User

aaa

a guest
Apr 30th, 2017
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.67 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. Player p = e.getPlayer();
  191. if (this.frozen.contains(p))
  192. {
  193. this.frozen.remove(p);
  194. if (this.isEnableAutoban && p.hasPermission("freeze.logout.alert")){
  195. Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "ban " + e.getPlayer().getName() + " " + Utils.getLocalized(null, "FREEZE.FREEZE_AUTOBAN_REASON", new Object[0]));
  196. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&7&m------------------------------------"));
  197. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', ""));
  198. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&c&lPlayer &4&l" + e.getPlayer().getName() + " &c&ldisconnected while he was frozen"));
  199. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', ""));
  200. Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', "&7&m------------------------------------"));
  201. }
  202. }
  203. if (this.panic.contains(e.getPlayer()))
  204. {
  205. this.panic.remove(e.getPlayer());
  206. }
  207. }
  208.  
  209. @EventHandler
  210. public void onPlayerKick(PlayerKickEvent event)
  211. {
  212. if (this.frozen.contains(event.getPlayer())) {
  213. this.frozen.remove(event.getPlayer());
  214. }
  215. if (this.panic.contains(event.getPlayer())) {
  216. this.panic.remove(event.getPlayer());
  217. }
  218. }
  219.  
  220. @EventHandler
  221. public void onPickup(PlayerPickupItemEvent event)
  222. {
  223. if (this.frozen.contains(event.getPlayer()) || this.panic.contains(event.getPlayer())) {
  224. event.setCancelled(true);
  225. }
  226. }
  227.  
  228. @EventHandler
  229. public void onDrop(PlayerDropItemEvent event)
  230. {
  231. if (this.frozen.contains(event.getPlayer()) || this.panic.contains(event.getPlayer())) {
  232. event.setCancelled(true);
  233. }
  234. }
  235.  
  236. @EventHandler
  237. public void onInteract(PlayerInteractEvent event)
  238. {
  239. if (this.frozen.contains(event.getPlayer()) || this.panic.contains(event.getPlayer())) {
  240. event.setCancelled(true);
  241. }
  242. }
  243. @EventHandler(ignoreCancelled=true, priority=EventPriority.MONITOR)
  244. public void onCommandFreeze(PlayerCommandPreprocessEvent e) {
  245. if (this.isFrozen(e.getPlayer())) {
  246. List<String> restrict;
  247. String commandd = e.getMessage();
  248. String firstt = commandd.split(" ")[0];
  249. int index = firstt.indexOf(":");
  250. if (index != -1) {
  251. commandd = "/" + commandd.substring(index + 1, commandd.length());
  252. }
  253. if ((restrict = this.getPlugin().getConfig().getStringList("Freeze.Disable-commands")) != null) {
  254. for (String str : restrict) {
  255. if (e.getMessage().equalsIgnoreCase(str)){
  256. Utils.sendLocalized(e.getPlayer(), "FREEZE.FREEZE_BLOCK_CMD", new Object[0]);
  257. e.setCancelled(true);
  258. return;
  259. }
  260. }
  261. }
  262. }
  263. if (this.isPanic(e.getPlayer())) {
  264. List<String> restrictt;
  265. String commands = e.getMessage();
  266. String frst = commands.split(" ")[0];
  267. int indexx = frst.indexOf(":");
  268. if (indexx != -1) {
  269. commands = "/" + commands.substring(indexx + 1, commands.length());
  270. }
  271. if ((restrictt = this.getPlugin().getConfig().getStringList("Freeze.Disable-commands")) != null) {
  272. for (String strr : restrictt) {
  273. if (e.getMessage().equalsIgnoreCase(strr)){
  274. Utils.sendLocalized(e.getPlayer(), "PANIC.PANIC_BLOCK_CMD", new Object[0]);
  275. e.setCancelled(true);
  276. return;
  277. }
  278. }
  279. }
  280. }
  281. }
  282. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement