Advertisement
BluePvP

test 1

Apr 11th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 57.96 KB | None | 0 0
  1. package ro.Fr33styler.CounterStrike.Handler;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.DataOutputStream;
  5. import java.util.HashMap;
  6. import java.util.Iterator;
  7. import java.util.List;
  8. import java.util.Set;
  9. import org.bukkit.Bukkit;
  10. import org.bukkit.Effect;
  11. import org.bukkit.Location;
  12. import org.bukkit.Material;
  13. import org.bukkit.Server;
  14. import org.bukkit.World;
  15. import org.bukkit.block.Block;
  16. import org.bukkit.block.BlockFace;
  17. import org.bukkit.block.Sign;
  18. import org.bukkit.configuration.file.YamlConfiguration;
  19. import org.bukkit.entity.Entity;
  20. import org.bukkit.entity.EntityType;
  21. import org.bukkit.entity.Player;
  22. import org.bukkit.event.EventHandler;
  23. import org.bukkit.event.EventPriority;
  24. import org.bukkit.event.Listener;
  25. import org.bukkit.event.block.Action;
  26. import org.bukkit.event.block.BlockBreakEvent;
  27. import org.bukkit.event.block.BlockPhysicsEvent;
  28. import org.bukkit.event.block.BlockPlaceEvent;
  29. import org.bukkit.event.block.SignChangeEvent;
  30. import org.bukkit.event.entity.EntityDamageByEntityEvent;
  31. import org.bukkit.event.entity.EntityDamageEvent;
  32. import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
  33. import org.bukkit.event.entity.EntityRegainHealthEvent;
  34. import org.bukkit.event.entity.FoodLevelChangeEvent;
  35. import org.bukkit.event.hanging.HangingBreakByEntityEvent;
  36. import org.bukkit.event.hanging.HangingBreakEvent;
  37. import org.bukkit.event.hanging.HangingBreakEvent.RemoveCause;
  38. import org.bukkit.event.inventory.InventoryClickEvent;
  39. import org.bukkit.event.inventory.InventoryType.SlotType;
  40. import org.bukkit.event.player.AsyncPlayerChatEvent;
  41. import org.bukkit.event.player.PlayerCommandPreprocessEvent;
  42. import org.bukkit.event.player.PlayerDropItemEvent;
  43. import org.bukkit.event.player.PlayerInteractAtEntityEvent;
  44. import org.bukkit.event.player.PlayerInteractEvent;
  45. import org.bukkit.event.player.PlayerItemConsumeEvent;
  46. import org.bukkit.event.player.PlayerItemHeldEvent;
  47. import org.bukkit.event.player.PlayerJoinEvent;
  48. import org.bukkit.event.player.PlayerKickEvent;
  49. import org.bukkit.event.player.PlayerLoginEvent;
  50. import org.bukkit.event.player.PlayerLoginEvent.Result;
  51. import org.bukkit.event.player.PlayerMoveEvent;
  52. import org.bukkit.event.player.PlayerPickupItemEvent;
  53. import org.bukkit.event.player.PlayerQuitEvent;
  54. import org.bukkit.event.player.PlayerResourcePackStatusEvent;
  55. import org.bukkit.event.player.PlayerResourcePackStatusEvent.Status;
  56. import org.bukkit.event.player.PlayerToggleSneakEvent;
  57. import org.bukkit.event.server.PluginEnableEvent;
  58. import org.bukkit.event.server.ServerListPingEvent;
  59. import org.bukkit.inventory.Inventory;
  60. import org.bukkit.inventory.ItemStack;
  61. import org.bukkit.inventory.PlayerInventory;
  62. import org.bukkit.inventory.meta.ItemMeta;
  63. import org.bukkit.plugin.PluginManager;
  64. import org.bukkit.potion.PotionEffect;
  65. import org.bukkit.potion.PotionEffectType;
  66. import org.bukkit.util.Vector;
  67. import ro.Fr33styler.CounterStrike.Api.GameLeaveEvent;
  68. import ro.Fr33styler.CounterStrike.Cache.PlayerShop;
  69. import ro.Fr33styler.CounterStrike.Cache.PlayerStatus;
  70. import ro.Fr33styler.CounterStrike.Cache.ShopType;
  71. import ro.Fr33styler.CounterStrike.Grenades.Grenade;
  72. import ro.Fr33styler.CounterStrike.Grenades.GrenadeType;
  73. import ro.Fr33styler.CounterStrike.Guns.Gun;
  74. import ro.Fr33styler.CounterStrike.Guns.GunType;
  75. import ro.Fr33styler.CounterStrike.Main;
  76. import ro.Fr33styler.CounterStrike.Messages;
  77. import ro.Fr33styler.CounterStrike.UpdateTask;
  78. import ro.Fr33styler.CounterStrike.Utils.GameUtils;
  79. import ro.Fr33styler.CounterStrike.Utils.ItemBuilder;
  80. import ro.Fr33styler.CounterStrike.Version.SpigotSound;
  81. import ro.Fr33styler.CounterStrike.Version.VersionInterface;
  82.  
  83. public class GameListener
  84.   implements Listener
  85. {
  86.   private Main main;
  87.   private Inventory selector = Bukkit.createInventory(null, 27, Messages.SELECTOR_NAME.toString());
  88.  
  89.   public GameListener(Main paramMain)
  90.   {
  91.     this.main = paramMain;
  92.     this.selector.setItem(11, ItemBuilder.create(Material.INK_SACK, 1, (short)14, "&a" + Messages.TEAM_NAME + " " + Messages.TEAM_FIRST, Messages.SELECTOR_TEAM_A.toString()));
  93.     this.selector.setItem(13, ItemBuilder.create(Material.INK_SACK, 1, (short)8, "&a" + Messages.TEAM_RANDOM, Messages.SELECTOR_TEAM_RANDOM.toString()));
  94.     this.selector.setItem(15, ItemBuilder.create(Material.INK_SACK, 1, (short)10, "&a" + Messages.TEAM_NAME + " " + Messages.TEAM_SECOND, Messages.SELECTOR_TEAM_B.toString()));
  95.   }
  96.  
  97.   @EventHandler
  98.   public void onInteract(PlayerInteractEvent paramPlayerInteractEvent)
  99.   {
  100.     Player localPlayer = paramPlayerInteractEvent.getPlayer();
  101.     Game localGame = this.main.getManager().getGame(localPlayer);
  102.     Object localObject1;
  103.     Object localObject2;
  104.     Object localObject3;
  105.     if (localGame != null)
  106.     {
  107.       if ((paramPlayerInteractEvent.getAction() == Action.RIGHT_CLICK_AIR) || (paramPlayerInteractEvent.getAction() == Action.RIGHT_CLICK_BLOCK))
  108.       {
  109.         if (localGame.getState() == GameState.WAITING)
  110.         {
  111.           if (localPlayer.getInventory().getItemInHand() != null) {
  112.             if (localPlayer.getInventory().getItemInHand().getType() == Material.LEATHER)
  113.             {
  114.               localPlayer.openInventory(this.selector);
  115.             }
  116.             else if (localPlayer.getInventory().getItemInHand().getType() == Material.BED)
  117.             {
  118.               paramPlayerInteractEvent.setCancelled(true);
  119.               this.main.getManager().removePlayer(localGame, localPlayer, false, false);
  120.               localPlayer.sendMessage(Messages.PREFIX + Messages.GAME_LEFT.toString());
  121.             }
  122.           }
  123.         }
  124.         else if ((localGame.getState() == GameState.IN_GAME) || (localGame.getState() == GameState.ROUND))
  125.         {
  126.           localObject1 = localPlayer.getInventory().getItemInHand();
  127.           if ((localObject1 != null) && (((ItemStack)localObject1).getType() != Material.AIR) && (((ItemStack)localObject1).getType() == Material.GHAST_TEAR))
  128.           {
  129.             if (this.main.getManager().isAtSpawn(localGame, localPlayer))
  130.             {
  131.               if ((localGame.getTimer() > 90) || (localGame.getState() == GameState.ROUND)) {
  132.                 localPlayer.openInventory((Inventory)localGame.getShops().get(localPlayer.getUniqueId()));
  133.               } else {
  134.                 localPlayer.sendMessage(Messages.SHOP_AFTER_30_SECONDS.toString());
  135.               }
  136.             }
  137.             else {
  138.               localPlayer.sendMessage(Messages.OPEN_SHOP_SPAWN.toString());
  139.             }
  140.             return;
  141.           }
  142.           if ((localObject1 != null) && (((ItemStack)localObject1).getType() != Material.AIR) && (localGame.getState() == GameState.IN_GAME))
  143.           {
  144.             if (((((ItemStack)localObject1).getType() == Material.SHEARS) || (((ItemStack)localObject1).getType() == Material.GOLD_NUGGET)) && (paramPlayerInteractEvent.getClickedBlock() != null) && (paramPlayerInteractEvent.getClickedBlock().getType() == Material.DAYLIGHT_DETECTOR))
  145.             {
  146.               paramPlayerInteractEvent.setCancelled(true);
  147.               if ((this.main.getManager().getTeam(localGame, GameTeam.Role.COUNTERTERRORIST).getPlayers().contains(localPlayer)) &&
  148.                 (!localGame.isDefusing(localPlayer)) && (localPlayer.getLocation().distance(localGame.getBomb().getLocation()) <= 2.0D))
  149.               {
  150.                 localGame.addDefuser(localPlayer, ((ItemStack)localObject1).getType() == Material.SHEARS ? 5 : 10);
  151.                 localPlayer.playSound(localPlayer.getLocation(), SpigotSound.LEVEL_UP.getSound(), 1.0F, 1.0F);
  152.               }
  153.             }
  154.             if (((((ItemStack)localObject1).getType() == Material.SHEARS) || (((ItemStack)localObject1).getType() == Material.GOLD_NUGGET)) && (paramPlayerInteractEvent.getClickedBlock() != null) && (paramPlayerInteractEvent.getClickedBlock().getType() == Material.CROPS))
  155.             {
  156.               paramPlayerInteractEvent.setCancelled(true);
  157.               if ((this.main.getManager().getTeam(localGame, GameTeam.Role.COUNTERTERRORIST).getPlayers().contains(localPlayer)) &&
  158.                 (!localGame.isDefusing(localPlayer)) && (localPlayer.getLocation().distance(localGame.getBomb().getLocation()) <= 2.0D))
  159.               {
  160.                 localGame.addDefuser(localPlayer, ((ItemStack)localObject1).getType() == Material.SHEARS ? 5 : 10);
  161.                 localPlayer.playSound(localPlayer.getLocation(), SpigotSound.LEVEL_UP.getSound(), 1.0F, 1.0F);
  162.               }
  163.             }
  164.             localObject2 = this.main.getGun((ItemStack)localObject1);
  165.             if ((localObject2 != null) && (!localGame.isDefusing(localPlayer))) {
  166.               ((Gun)localObject2).shot(localGame, localPlayer);
  167.             }
  168.             localObject3 = this.main.getGrenade((ItemStack)localObject1);
  169.             if ((localObject3 != null) && (localGame.getState() == GameState.IN_GAME) && (!localGame.isRoundEnding()) && (!localGame.isDefusing(localPlayer)))
  170.             {
  171.               paramPlayerInteractEvent.setCancelled(true);
  172.               ((Grenade)localObject3).throwGrenade(this.main, localGame, localPlayer);
  173.             }
  174.           }
  175.         }
  176.       }
  177.       else if ((paramPlayerInteractEvent.getAction() == Action.LEFT_CLICK_AIR) || (paramPlayerInteractEvent.getAction() == Action.LEFT_CLICK_BLOCK))
  178.       {
  179.         paramPlayerInteractEvent.setCancelled(true);
  180.         localObject1 = localPlayer.getInventory().getItemInHand();
  181.         if ((localObject1 != null) && (((ItemStack)localObject1).getType() != Material.AIR))
  182.         {
  183.           localObject2 = this.main.getGun((ItemStack)localObject1);
  184.           if (localObject2 != null) {
  185.             ((Gun)localObject2).reload(localPlayer, localPlayer.getInventory().getHeldItemSlot());
  186.           }
  187.         }
  188.       }
  189.     }
  190.     else if ((paramPlayerInteractEvent.getAction() == Action.RIGHT_CLICK_BLOCK) && ((paramPlayerInteractEvent.getClickedBlock().getState() instanceof Sign)))
  191.     {
  192.       localObject1 = paramPlayerInteractEvent.getClickedBlock().getLocation();
  193.       Iterator localIterator;
  194.       Object localObject4;
  195.       for (localObject3 = this.main.getManager().getGames().iterator(); ((Iterator)localObject3).hasNext(); localIterator.hasNext())
  196.       {
  197.         localObject2 = (Game)((Iterator)localObject3).next();
  198.         localIterator = ((Game)localObject2).getSigns().iterator(); continue;localObject4 = (Location)localIterator.next();
  199.         if ((((Location)localObject1).getWorld() == ((Location)localObject4).getWorld()) && (((Location)localObject1).distance((Location)localObject4) == 0.0D))
  200.         {
  201.           paramPlayerInteractEvent.setCancelled(true);
  202.           this.main.getManager().addPlayer(localPlayer, (Game)localObject2);
  203.           return;
  204.         }
  205.       }
  206.       localObject2 = this.main.getManager().getQuickJoinSigns().iterator();
  207.       while (((Iterator)localObject2).hasNext())
  208.       {
  209.         localObject3 = (Location)((Iterator)localObject2).next();
  210.         if (((Location)localObject1).equals(localObject3))
  211.         {
  212.           localObject4 = this.main.getManager().findGame(localPlayer);
  213.           if (localObject4 == null) {
  214.             break;
  215.           }
  216.           if (((Game)localObject4).getState() == GameState.WAITING)
  217.           {
  218.             this.main.getManager().addPlayer(localPlayer, (Game)localObject4);
  219.             break;
  220.           }
  221.           if ((((Game)localObject4).getState() != GameState.IN_GAME) && (((Game)localObject4).getState() != GameState.ROUND)) {
  222.             break;
  223.           }
  224.           this.main.getManager().addQuickPlayer((Game)localObject4, localPlayer);
  225.          
  226.           break;
  227.         }
  228.       }
  229.     }
  230.   }
  231.  
  232.   @EventHandler
  233.   public void onDamageWithKnife(EntityDamageByEntityEvent paramEntityDamageByEntityEvent)
  234.   {
  235.     Object localObject;
  236.     if ((paramEntityDamageByEntityEvent.getEntity().getType() == EntityType.PLAYER) && (paramEntityDamageByEntityEvent.getDamager().getType() == EntityType.PLAYER))
  237.     {
  238.       localObject = (Player)paramEntityDamageByEntityEvent.getEntity();
  239.       Player localPlayer = (Player)paramEntityDamageByEntityEvent.getDamager();
  240.       Game localGame = this.main.getManager().getGame((Player)localObject);
  241.       if (localGame != null)
  242.       {
  243.         paramEntityDamageByEntityEvent.setCancelled(true);
  244.         if ((localGame.getState() == GameState.IN_GAME) && (!this.main.getManager().sameTeam(localGame, (Player)localObject, localPlayer)) && (localPlayer.getInventory().getHeldItemSlot() == 2) && (localPlayer.getItemInHand() != null) && (this.main.getUpdateTask().getDelay().get(((Player)localObject).getUniqueId()) == null) && (!localGame.getSpectators().contains(localObject)))
  245.         {
  246.           if (this.main.enableBlood()) {
  247.             ((Player)localObject).getWorld().playEffect(((Player)localObject).getLocation(), Effect.STEP_SOUND, Material.REDSTONE_WIRE);
  248.           }
  249.           Vector localVector1 = localPlayer.getEyeLocation().toVector().subtract(((Player)localObject).getEyeLocation().toVector());
  250.           Vector localVector2 = ((Player)localObject).getEyeLocation().getDirection().normalize();
  251.           float f = localVector1.angle(localVector2);
  252.           if ((localPlayer.getLocation().distance(((Player)localObject).getLocation()) <= 1.7D) || (f <= 1.5D)) {
  253.             this.main.getManager().damage(localGame, localPlayer, (Player)localObject, 3.0D, "?");
  254.           } else {
  255.             this.main.getManager().damage(localGame, localPlayer, (Player)localObject, 20.0D, "?");
  256.           }
  257.           this.main.getUpdateTask().getDelay().put(((Player)localObject).getUniqueId(), Integer.valueOf(35));
  258.         }
  259.       }
  260.     }
  261.     else if ((paramEntityDamageByEntityEvent.getDamager().getType() == EntityType.PLAYER) && (paramEntityDamageByEntityEvent.getEntity().getType() == EntityType.ITEM_FRAME))
  262.     {
  263.       localObject = this.main.getManager().getGame((Player)paramEntityDamageByEntityEvent.getDamager());
  264.       if (localObject != null) {
  265.         paramEntityDamageByEntityEvent.setCancelled(true);
  266.       }
  267.     }
  268.   }
  269.  
  270.   @EventHandler
  271.   public void onBombPlant(PlayerItemConsumeEvent paramPlayerItemConsumeEvent)
  272.   {
  273.     Player localPlayer1 = paramPlayerItemConsumeEvent.getPlayer();
  274.     Game localGame = this.main.getManager().getGame(localPlayer1);
  275.     if (localGame != null)
  276.     {
  277.       paramPlayerItemConsumeEvent.setCancelled(true);
  278.       if ((localPlayer1.getInventory().getItemInHand().getType() == Material.GOLDEN_APPLE) &&
  279.         (localGame.getState() == GameState.IN_GAME) && (!localGame.isRoundEnding()) && (localPlayer1.getLocation().getBlock().getRelative(BlockFace.DOWN).getType().isSolid()))
  280.       {
  281.         Block localBlock = localPlayer1.getLocation().getBlock();
  282.         if (localBlock.getType() == Material.AIR)
  283.         {
  284.           localPlayer1.getInventory().setItem(5, new ItemStack(Material.AIR));
  285.           localBlock.setType(Material.DAYLIGHT_DETECTOR);
  286.           localGame.getBomb().setLocation(localBlock.getLocation());
  287.           localGame.getBomb().setTimer(this.main.getBombTime());
  288.           localGame.setGameTimer(this.main.getBombTime());
  289.           localGame.getBomb().isPlanted(true);
  290.           localGame.setMoney(localPlayer1, localGame.getMoney(localPlayer1) + this.main.getBombPlantMoney());
  291.           ((PlayerStatus)localGame.getStats().get(localPlayer1.getUniqueId())).addBombPlanted();
  292.           Player localPlayer2;
  293.           for (Iterator localIterator = this.main.getManager().getTeam(localGame, GameTeam.Role.TERRORIST).getPlayers().iterator(); localIterator.hasNext();)
  294.           {
  295.             localPlayer2 = (Player)localIterator.next();
  296.             localPlayer2.setCompassTarget(localPlayer1.getLocation().getBlock().getLocation());
  297.             localPlayer2.playSound(localPlayer2.getLocation(), "cs.gamesounds.bombplanted", 1.0F, 1.0F);
  298.             this.main.getVersionInterface().sendTitle(localPlayer2, 0, 23, 0, "", Messages.BOMB_PLANTED.toString());
  299.           }
  300.           for (localIterator = this.main.getManager().getTeam(localGame, GameTeam.Role.COUNTERTERRORIST).getPlayers().iterator(); localIterator.hasNext();)
  301.           {
  302.             localPlayer2 = (Player)localIterator.next();
  303.             localPlayer2.playSound(localPlayer2.getLocation(), "cs.gamesounds.bombplanted", 1.0F, 1.0F);
  304.             this.main.getVersionInterface().sendTitle(localPlayer2, 0, 23, 0, "", Messages.BOMB_PLANTED.toString());
  305.           }
  306.         }
  307.       }
  308.     }
  309.   }
  310.  
  311.   @EventHandler
  312.   public void onChat(AsyncPlayerChatEvent paramAsyncPlayerChatEvent)
  313.   {
  314.     Player localPlayer = paramAsyncPlayerChatEvent.getPlayer();
  315.     Game localGame = this.main.getManager().getGame(localPlayer);
  316.     Object localObject;
  317.     if (localGame == null)
  318.     {
  319.       for (Iterator localIterator = this.main.getManager().getGames().iterator(); localIterator.hasNext();)
  320.       {
  321.         localObject = (Game)localIterator.next();
  322.         paramAsyncPlayerChatEvent.getRecipients().removeAll(((Game)localObject).getTeamA().getPlayers());
  323.         paramAsyncPlayerChatEvent.getRecipients().removeAll(((Game)localObject).getTeamB().getPlayers());
  324.       }
  325.     }
  326.     else
  327.     {
  328.       paramAsyncPlayerChatEvent.getRecipients().clear();
  329.       if ((localGame.getState() == GameState.WAITING) || (localGame.getState() == GameState.END))
  330.       {
  331.         paramAsyncPlayerChatEvent.getRecipients().addAll(localGame.getTeamA().getPlayers());
  332.         paramAsyncPlayerChatEvent.getRecipients().addAll(localGame.getTeamB().getPlayers());
  333.         paramAsyncPlayerChatEvent.setFormat(Messages.CHAT_WAITING_FORMAT.toString().replace("%player%", localPlayer.getName()).replace("%message%", "%2$s"));
  334.       }
  335.       else if ((paramAsyncPlayerChatEvent.getMessage().startsWith("!")) && (paramAsyncPlayerChatEvent.getMessage().length() > 1))
  336.       {
  337.         paramAsyncPlayerChatEvent.getRecipients().addAll(localGame.getTeamA().getPlayers());
  338.         paramAsyncPlayerChatEvent.getRecipients().addAll(localGame.getTeamB().getPlayers());
  339.         paramAsyncPlayerChatEvent.setFormat(Messages.CHAT_GLOBAL_FORMAT.toString().replace("%player%", localPlayer.getName()).replace("%message%", paramAsyncPlayerChatEvent.getMessage().substring(1)));
  340.       }
  341.       else if (this.main.getManager().getTeam(localGame, localPlayer) == GameTeam.Role.COUNTERTERRORIST)
  342.       {
  343.         localObject = this.main.getManager().getTeam(localGame, GameTeam.Role.COUNTERTERRORIST);
  344.         paramAsyncPlayerChatEvent.getRecipients().addAll(((GameTeam)localObject).getPlayers());
  345.         paramAsyncPlayerChatEvent.setFormat(Messages.CHAT_PLAYING_FORMAT.toString().replace("%team%", "�3?").replace("%player%", localPlayer.getName()).replace("%message%", "%2$s"));
  346.       }
  347.       else
  348.       {
  349.         localObject = this.main.getManager().getTeam(localGame, GameTeam.Role.TERRORIST);
  350.         paramAsyncPlayerChatEvent.getRecipients().addAll(((GameTeam)localObject).getPlayers());
  351.         paramAsyncPlayerChatEvent.setFormat(Messages.CHAT_PLAYING_FORMAT.toString().replace("%team%", "�4?").replace("%player%", localPlayer.getName()).replace("%message%", "%2$s"));
  352.       }
  353.     }
  354.   }
  355.  
  356.   @EventHandler
  357.   public void onSlotChange(PlayerItemHeldEvent paramPlayerItemHeldEvent)
  358.   {
  359.     Player localPlayer = paramPlayerItemHeldEvent.getPlayer();
  360.     Game localGame = this.main.getManager().getGame(localPlayer);
  361.     if ((localGame != null) && (localGame.getState() != GameState.WAITING))
  362.     {
  363.       Gun localGun1 = this.main.getGun(localPlayer.getInventory().getItem(paramPlayerItemHeldEvent.getPreviousSlot()));
  364.       if (localGun1 != null)
  365.       {
  366.         localGun1.resetPlayer(localPlayer);
  367.         if (localGun1.getModule() == 2) {
  368.           localPlayer.setExp(0.0F);
  369.         } else {
  370.           localPlayer.getInventory().getItem(paramPlayerItemHeldEvent.getPreviousSlot()).setDurability((short)0);
  371.         }
  372.       }
  373.       Gun localGun2 = this.main.getGun(localPlayer.getInventory().getItemInHand());
  374.       if ((localGun2 != null) &&
  375.         (localGun2.hasSnipe()) && (localPlayer.isSneaking())) {
  376.         paramPlayerItemHeldEvent.setCancelled(true);
  377.       }
  378.       if (!paramPlayerItemHeldEvent.isCancelled()) {
  379.         if (paramPlayerItemHeldEvent.getNewSlot() == 2) {
  380.           localPlayer.setWalkSpeed(0.25F);
  381.         } else {
  382.           localPlayer.setWalkSpeed(0.2F);
  383.         }
  384.       }
  385.     }
  386.   }
  387.  
  388.   @EventHandler
  389.   public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent paramPlayerInteractAtEntityEvent)
  390.   {
  391.     Player localPlayer = paramPlayerInteractAtEntityEvent.getPlayer();
  392.     if (this.main.getManager().getGame(localPlayer) == null) {
  393.       return;
  394.     }
  395.     if (paramPlayerInteractAtEntityEvent.getRightClicked().getType() == EntityType.ARMOR_STAND) {
  396.       paramPlayerInteractAtEntityEvent.setCancelled(true);
  397.     }
  398.   }
  399.  
  400.   @EventHandler
  401.   public void onClick(InventoryClickEvent paramInventoryClickEvent)
  402.   {
  403.     Player localPlayer = (Player)paramInventoryClickEvent.getWhoClicked();
  404.     Game localGame = this.main.getManager().getGame(localPlayer);
  405.     if (localGame != null)
  406.     {
  407.       paramInventoryClickEvent.setCancelled(true);
  408.       if (paramInventoryClickEvent.getSlotType() != InventoryType.SlotType.OUTSIDE)
  409.       {
  410.         if (paramInventoryClickEvent.getClickedInventory().equals(this.selector)) {
  411.           if (paramInventoryClickEvent.getSlot() == 11)
  412.           {
  413.             localGame.addTeamA(localPlayer);
  414.             localPlayer.playSound(localPlayer.getLocation(), SpigotSound.NOTE_STICKS.getSound(), 1.0F, 1.0F);
  415.             localPlayer.sendMessage(Messages.SELECTOR_CHOOSE_TEAM_A.toString());
  416.             localPlayer.closeInventory();
  417.           }
  418.           else if (paramInventoryClickEvent.getSlot() == 13)
  419.           {
  420.             localGame.addRandomTeam(localPlayer);
  421.             localPlayer.playSound(localPlayer.getLocation(), SpigotSound.NOTE_STICKS.getSound(), 1.0F, 1.0F);
  422.             localPlayer.sendMessage(Messages.SELECTOR_CHOOSE_TEAM_RANDOM.toString());
  423.             localPlayer.closeInventory();
  424.           }
  425.           else if (paramInventoryClickEvent.getSlot() == 15)
  426.           {
  427.             localGame.addTeamB(localPlayer);
  428.             localPlayer.playSound(localPlayer.getLocation(), SpigotSound.NOTE_STICKS.getSound(), 1.0F, 1.0F);
  429.             localPlayer.sendMessage(Messages.SELECTOR_CHOOSE_TEAM_B.toString());
  430.             localPlayer.closeInventory();
  431.           }
  432.         }
  433.         if (paramInventoryClickEvent.getClickedInventory().getName().equals(Messages.ITEM_SHOP_NAME.toString())) {
  434.           for (PlayerShop localPlayerShop : this.main.getShops()) {
  435.             if ((paramInventoryClickEvent.getSlot() == localPlayerShop.getSlot()) && ((localPlayerShop.getRole() == null) || (this.main.getManager().getTeam(localGame, localPlayer) == localPlayerShop.getRole())))
  436.             {
  437.               if ((localPlayerShop.hasPermission()) && (!localPlayer.hasPermission("cs.weapon." + localPlayerShop.getWeaponName())))
  438.               {
  439.                 localPlayer.closeInventory();
  440.                 localPlayer.sendMessage(Messages.SHOP_NO_PERMISSION.toString());
  441.                 localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopcantbuy", 1.0F, 1.0F);
  442.                 break;
  443.               }
  444.               if (localPlayerShop.getPrice() <= localGame.getMoney(localPlayer))
  445.               {
  446.                 Object localObject;
  447.                 if (localPlayerShop.getType() == ShopType.GRENADE)
  448.                 {
  449.                   localObject = this.main.getGrenade(localPlayerShop.getWeaponName());
  450.                   if (localPlayer.getInventory().getItem(((Grenade)localObject).getGrenadeType().getSlot()) == null)
  451.                   {
  452.                     localGame.setMoney(localPlayer, localGame.getMoney(localPlayer) - localPlayerShop.getPrice());
  453.                     localPlayer.getInventory().setItem(((Grenade)localObject).getGrenadeType().getSlot(), ItemBuilder.create(((Grenade)localObject).getItem().getType(), 1, ((Grenade)localObject).getItem().getData(), ((Grenade)localObject).getItem().getName() + " &7" + ((Grenade)localObject).getSymbol()));
  454.                     localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopbuyitem", 1.0F, 1.0F);
  455.                     break;
  456.                   }
  457.                   localPlayer.closeInventory();
  458.                   localPlayer.sendMessage(Messages.SHOP_GRENADE_ALREADY_IN_SLOT.toString());
  459.                   localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopcantbuy", 1.0F, 1.0F);
  460.                  
  461.                   break;
  462.                 }
  463.                 if (localPlayerShop.getType() == ShopType.GUN)
  464.                 {
  465.                   localObject = this.main.getGun(localPlayerShop.getWeaponName());
  466.                   if ((localPlayer.getInventory().getItem(((Gun)localObject).getGunType().getID().intValue()) == null) || (this.main.replaceOldGuns()))
  467.                   {
  468.                     localGame.setMoney(localPlayer, localGame.getMoney(localPlayer) - localPlayerShop.getPrice());
  469.                     localPlayer.getInventory().setItem(((Gun)localObject).getGunType().getID().intValue(), ItemBuilder.create(((Gun)localObject).getItem().getType(), ((Gun)localObject).getAmount(), ((Gun)localObject).getItem().getData(), ((Gun)localObject).getItem().getName() + " &7" + ((Gun)localObject).getSymbol()));
  470.                     localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopbuyitem", 1.0F, 1.0F);
  471.                     break;
  472.                   }
  473.                   localPlayer.closeInventory();
  474.                   localPlayer.sendMessage(Messages.SHOP_GUN_ALREADY_IN_SLOT.toString());
  475.                   localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopcantbuy", 1.0F, 1.0F);
  476.                  
  477.                   break;
  478.                 }
  479.                 if ((localPlayerShop.getRole() != null) && (this.main.getManager().getTeam(localGame, localPlayer) != localPlayerShop.getRole())) {
  480.                   break;
  481.                 }
  482.                 if (localPlayerShop.getMaterial() != Material.SHEARS)
  483.                 {
  484.                   localObject = localPlayer.getInventory().getItem(localPlayerShop.getSlotPlace());
  485.                   if ((localPlayerShop.getSlotPlace() == 2) || (localObject == null) || (((ItemStack)localObject).getType() == Material.LEATHER_HELMET) || (((ItemStack)localObject).getType() == Material.LEATHER_CHESTPLATE))
  486.                   {
  487.                     localGame.setMoney(localPlayer, localGame.getMoney(localPlayer) - localPlayerShop.getPrice());
  488.                     localPlayer.getInventory().setItem(localPlayerShop.getSlotPlace(), ItemBuilder.create(localPlayerShop.getMaterial(), 1, localPlayerShop.getName(), false));
  489.                     localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopbuyitem", 1.0F, 1.0F);
  490.                     break;
  491.                   }
  492.                   localPlayer.closeInventory();
  493.                   localPlayer.sendMessage(Messages.SHOP_ALREADY_BROUGHT.toString());
  494.                   localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopcantbuy", 1.0F, 1.0F);
  495.                  
  496.                   break;
  497.                 }
  498.                 if (localPlayer.getInventory().getItem(localPlayerShop.getSlotPlace()).getType() != Material.SHEARS)
  499.                 {
  500.                   localGame.setMoney(localPlayer, localGame.getMoney(localPlayer) - localPlayerShop.getPrice());
  501.                   localPlayer.getInventory().setItem(localPlayerShop.getSlotPlace(), ItemBuilder.create(localPlayerShop.getMaterial(), 1, localPlayerShop.getName(), false));
  502.                   localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopbuyitem", 1.0F, 1.0F);
  503.                   break;
  504.                 }
  505.                 localPlayer.closeInventory();
  506.                 localPlayer.sendMessage(Messages.SHOP_ALREADY_BROUGHT.toString());
  507.                 localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopcantbuy", 1.0F, 1.0F);
  508.                
  509.                 break;
  510.               }
  511.               localPlayer.closeInventory();
  512.               localPlayer.sendMessage(Messages.SHOP_NOT_ENOUGH_MONEY.toString());
  513.               localPlayer.playSound(localPlayer.getLocation(), "cs.shop.shopcantbuy", 1.0F, 1.0F);
  514.              
  515.               break;
  516.             }
  517.           }
  518.         }
  519.       }
  520.     }
  521.   }
  522.  
  523.   @EventHandler
  524.   public void onPlayerCommand(PlayerCommandPreprocessEvent paramPlayerCommandPreprocessEvent)
  525.   {
  526.     Player localPlayer = paramPlayerCommandPreprocessEvent.getPlayer();
  527.     Game localGame = this.main.getManager().getGame(localPlayer);
  528.     if (localGame != null)
  529.     {
  530.       String[] arrayOfString = paramPlayerCommandPreprocessEvent.getMessage().split(" ");
  531.       String str = arrayOfString[0];
  532.       if ((str.equalsIgnoreCase("/leave")) || (str.equalsIgnoreCase("/quit")))
  533.       {
  534.         paramPlayerCommandPreprocessEvent.setCancelled(true);
  535.         localPlayer.sendMessage(Messages.PREFIX + Messages.GAME_LEFT.toString());
  536.         this.main.getManager().removePlayer(localGame, localPlayer, false, false);
  537.       }
  538.       else if ((!str.equalsIgnoreCase("/cs")) && (!str.equalsIgnoreCase("/counterstrike")) && (!GameUtils.containsIgnoreCase(this.main.getWhitelistCommands(), str)))
  539.       {
  540.         paramPlayerCommandPreprocessEvent.setCancelled(true);
  541.         localPlayer.sendMessage(Messages.PREFIX + " " + Messages.RESTRICTED_COMMAND.toString());
  542.       }
  543.     }
  544.   }
  545.  
  546.   @EventHandler
  547.   public void onPlace(BlockPlaceEvent paramBlockPlaceEvent)
  548.   {
  549.     Player localPlayer = paramBlockPlaceEvent.getPlayer();
  550.     Game localGame = this.main.getManager().getGame(localPlayer);
  551.     if (localGame != null) {
  552.       paramBlockPlaceEvent.setCancelled(true);
  553.     }
  554.   }
  555.  
  556.   @EventHandler
  557.   public void onBreak(BlockBreakEvent paramBlockBreakEvent)
  558.   {
  559.     Player localPlayer = paramBlockBreakEvent.getPlayer();
  560.     Game localGame = this.main.getManager().getGame(localPlayer);
  561.     if (localGame != null)
  562.     {
  563.       paramBlockBreakEvent.setCancelled(true);
  564.     }
  565.     else if (((paramBlockBreakEvent.getBlock().getState() instanceof Sign)) && (localPlayer.hasPermission("cs.sign")))
  566.     {
  567.       Location localLocation = paramBlockBreakEvent.getBlock().getLocation();
  568.       Object localObject3;
  569.       Object localObject4;
  570.       for (Object localObject2 = this.main.getManager().getGames().iterator(); ((Iterator)localObject2).hasNext(); ((Iterator)localObject3).hasNext())
  571.       {
  572.         localObject1 = (Game)((Iterator)localObject2).next();
  573.         localObject3 = ((Game)localObject1).getSigns().iterator();
  574.         continue;
  575.         localObject4 = (Location)((Iterator)localObject3).next();
  576.         if ((localLocation.getWorld() == ((Location)localObject4).getWorld()) && (localLocation.distance((Location)localObject4) == 0.0D))
  577.         {
  578.           localPlayer.sendMessage(Messages.PREFIX + " �cSign removed succefully!");
  579.           String str = ((Game)localObject1).getID() + "," + localLocation.getWorld().getName() + "," + localLocation.getBlockX() + "," +
  580.             localLocation.getBlockY() + "," + localLocation.getBlockZ();
  581.           List localList = this.main.getGameDatabase().getStringList("Signs");
  582.           localList.remove(str);
  583.           this.main.getGameDatabase().set("Signs", localList);
  584.           this.main.saveGameDatabase();
  585.           ((Iterator)localObject3).remove();
  586.           return;
  587.         }
  588.       }
  589.       Object localObject1 = this.main.getManager().getQuickJoinSigns().iterator();
  590.       while (((Iterator)localObject1).hasNext())
  591.       {
  592.         localObject2 = (Location)((Iterator)localObject1).next();
  593.         if (localLocation.equals(localObject2))
  594.         {
  595.           localPlayer.sendMessage(Messages.PREFIX + " �cQuick-Sign removed succefully!");
  596.           localObject3 = localLocation.getWorld().getName() + "," + localLocation.getBlockX() + "," + localLocation.getBlockY() + "," +
  597.             localLocation.getBlockZ();
  598.           localObject4 = this.main.getGameDatabase().getStringList("QuickJoinSigns");
  599.           ((List)localObject4).remove(localObject3);
  600.           this.main.getGameDatabase().set("QuickJoinSigns", localObject4);
  601.           this.main.saveGameDatabase();
  602.           ((Iterator)localObject1).remove();
  603.         }
  604.       }
  605.     }
  606.   }
  607.  
  608.   @EventHandler
  609.   public void onPing(ServerListPingEvent paramServerListPingEvent)
  610.   {
  611.     if (this.main.getManager().isBungeeMode())
  612.     {
  613.       Game localGame = (Game)this.main.getManager().getGames().get(this.main.getManager().getMap());
  614.       paramServerListPingEvent.setMotd(localGame.getState().getState());
  615.       paramServerListPingEvent.setMaxPlayers(localGame.getMaxPlayers());
  616.     }
  617.   }
  618.  
  619.   @EventHandler
  620.   public void onLogin(PlayerLoginEvent paramPlayerLoginEvent)
  621.   {
  622.     if (this.main.getManager().isBungeeMode())
  623.     {
  624.       Game localGame = (Game)this.main.getManager().getGames().get(this.main.getManager().getMap());
  625.       if (localGame.getTeamA().size() + localGame.getTeamB().size() == localGame.getMaxPlayers()) {
  626.         paramPlayerLoginEvent.disallow(PlayerLoginEvent.Result.KICK_FULL, Messages.ARENA_IS_FULL.toString());
  627.       } else if ((localGame.getState() != GameState.WAITING) && (!this.main.canJoinStartedGame())) {
  628.         paramPlayerLoginEvent.disallow(PlayerLoginEvent.Result.KICK_OTHER, Messages.ARENA_HAS_STARTED.toString());
  629.       }
  630.     }
  631.   }
  632.  
  633.   @EventHandler
  634.   public void onLeave(GameLeaveEvent paramGameLeaveEvent)
  635.   {
  636.     if (this.main.getManager().isBungeeMode())
  637.     {
  638.       ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
  639.       DataOutputStream localDataOutputStream = new DataOutputStream(localByteArrayOutputStream);
  640.       try
  641.       {
  642.         localDataOutputStream.writeUTF("Connect");
  643.         localDataOutputStream.writeUTF(this.main.getHub());
  644.         paramGameLeaveEvent.getPlayer().sendPluginMessage(this.main, "BungeeCord", localByteArrayOutputStream.toByteArray());
  645.         localDataOutputStream.close();
  646.         localByteArrayOutputStream.close();
  647.       }
  648.       catch (Exception localException)
  649.       {
  650.         localException.printStackTrace();
  651.       }
  652.     }
  653.   }
  654.  
  655.   @EventHandler
  656.   public void onJoin(PlayerJoinEvent paramPlayerJoinEvent)
  657.   {
  658.     GameManager localGameManager = this.main.getManager();
  659.     Object localObject1;
  660.     Object localObject2;
  661.     if (localGameManager.isBungeeMode())
  662.     {
  663.       paramPlayerJoinEvent.setJoinMessage(null);
  664.       localObject1 = paramPlayerJoinEvent.getPlayer();
  665.       localObject2 = (Game)localGameManager.getGames().get(localGameManager.getMap());
  666.       if (((Game)localObject2).getState() != GameState.WAITING) {
  667.         localGameManager.addQuickPlayer((Game)localObject2, (Player)localObject1);
  668.       } else {
  669.         localGameManager.addPlayer(paramPlayerJoinEvent.getPlayer(), (Game)localObject2);
  670.       }
  671.     }
  672.     else
  673.     {
  674.       Iterator localIterator;
  675.       for (localObject2 = localGameManager.getGames().iterator(); ((Iterator)localObject2).hasNext(); localIterator.hasNext())
  676.       {
  677.         localObject1 = (Game)((Iterator)localObject2).next();
  678.         for (localIterator = ((Game)localObject1).getTeamA().getPlayers().iterator(); localIterator.hasNext();)
  679.         {
  680.           localPlayer = (Player)localIterator.next();
  681.           localPlayer.hidePlayer(paramPlayerJoinEvent.getPlayer());
  682.         }
  683.         localIterator = ((Game)localObject1).getTeamB().getPlayers().iterator(); continue;Player localPlayer = (Player)localIterator.next();
  684.         localPlayer.hidePlayer(paramPlayerJoinEvent.getPlayer());
  685.       }
  686.     }
  687.   }
  688.  
  689.   @EventHandler(priority=EventPriority.HIGHEST)
  690.   public void onLeave(PlayerQuitEvent paramPlayerQuitEvent)
  691.   {
  692.     Player localPlayer = paramPlayerQuitEvent.getPlayer();
  693.     Game localGame = this.main.getManager().getGame(localPlayer);
  694.     if (localGame != null) {
  695.       this.main.getManager().removePlayer(localGame, localPlayer, false, true);
  696.     }
  697.     if (this.main.getManager().isBungeeMode()) {
  698.       paramPlayerQuitEvent.setQuitMessage(null);
  699.     }
  700.     this.main.getTextureUsers().remove(localPlayer.getUniqueId());
  701.   }
  702.  
  703.   @EventHandler(priority=EventPriority.HIGHEST)
  704.   public void onPluginEnable(PluginEnableEvent paramPluginEnableEvent)
  705.   {
  706.     if (paramPluginEnableEvent.getPlugin().equals(this.main)) {
  707.       for (Player localPlayer : Bukkit.getOnlinePlayers()) {
  708.         this.main.getTextureUsers().add(localPlayer.getUniqueId());
  709.       }
  710.     }
  711.   }
  712.  
  713.   @EventHandler(priority=EventPriority.HIGHEST)
  714.   public void onKick(PlayerKickEvent paramPlayerKickEvent)
  715.   {
  716.     Player localPlayer = paramPlayerKickEvent.getPlayer();
  717.     paramPlayerKickEvent.setLeaveMessage(null);
  718.     Game localGame = this.main.getManager().getGame(localPlayer);
  719.     if (localGame != null) {
  720.       this.main.getManager().removePlayer(localGame, localPlayer, false, true);
  721.     }
  722.     if (this.main.getManager().isBungeeMode()) {
  723.       paramPlayerKickEvent.setLeaveMessage(null);
  724.     }
  725.     this.main.getTextureUsers().remove(localPlayer.getUniqueId());
  726.   }
  727.  
  728.   @EventHandler
  729.   public void onMove(PlayerMoveEvent paramPlayerMoveEvent)
  730.   {
  731.     Player localPlayer = paramPlayerMoveEvent.getPlayer();
  732.     Game localGame = this.main.getManager().getGame(localPlayer);
  733.     if (localGame != null) {
  734.       if (localGame.getState() == GameState.IN_GAME)
  735.       {
  736.         if ((localPlayer.getFallDistance() >= 6.0F) && (!localGame.getSpectators().contains(localPlayer)) && (localPlayer.getLocation().getBlock().getRelative(BlockFace.DOWN).getType().isSolid())) {
  737.           this.main.getManager().damage(localGame, null, localPlayer, localPlayer.getFallDistance(), "??");
  738.         }
  739.         if ((paramPlayerMoveEvent.getFrom().getBlockX() != paramPlayerMoveEvent.getTo().getBlockX()) || (paramPlayerMoveEvent.getFrom().getBlockZ() != paramPlayerMoveEvent.getTo().getBlockZ()))
  740.         {
  741.           if ((localGame.getSpectators().contains(localPlayer)) &&
  742.             (paramPlayerMoveEvent.getTo().getWorld() == localGame.getMid().getWorld()) && (paramPlayerMoveEvent.getTo().distance(localGame.getMid()) > this.main.getRadius())) {
  743.             paramPlayerMoveEvent.setTo(paramPlayerMoveEvent.getFrom());
  744.           }
  745.           if (localGame.getBomb().getCarrier() == localPlayer)
  746.           {
  747.             ItemStack localItemStack = localPlayer.getInventory().getItem(5);
  748.             if (localItemStack != null)
  749.             {
  750.               ItemMeta localItemMeta;
  751.               if (this.main.getManager().isInBombArea(localGame, paramPlayerMoveEvent.getTo()))
  752.               {
  753.                 if (localItemStack.getType() == Material.QUARTZ)
  754.                 {
  755.                   localItemMeta = localItemStack.getItemMeta();
  756.                   localItemMeta.setDisplayName("�e?�a " + Messages.ITEM_BOMB_NAME + " �8(�c" + Messages.ITEM_RIGHT_CLICK + "�8)");
  757.                   localItemStack.setItemMeta(localItemMeta);
  758.                   localItemStack.setType(Material.GOLDEN_APPLE);
  759.                   localPlayer.playSound(localPlayer.getLocation(), SpigotSound.CLICK.getSound(), 1.0F, 1.0F);
  760.                 }
  761.               }
  762.               else if (localItemStack.getType() == Material.GOLDEN_APPLE)
  763.               {
  764.                 localItemMeta = localItemStack.getItemMeta();
  765.                 localItemMeta.setDisplayName("�e?�a " + Messages.ITEM_BOMB_NAME);
  766.                 localItemStack.setItemMeta(localItemMeta);
  767.                 localItemStack.setType(Material.QUARTZ);
  768.                 localPlayer.playSound(localPlayer.getLocation(), SpigotSound.CLICK.getSound(), 1.0F, 1.0F);
  769.               }
  770.             }
  771.           }
  772.         }
  773.       }
  774.       else if ((localGame.getState() == GameState.ROUND) && (!localGame.getSpectators().contains(localPlayer)) && ((paramPlayerMoveEvent.getFrom().getX() != paramPlayerMoveEvent.getTo().getX()) || (paramPlayerMoveEvent.getFrom().getZ() != paramPlayerMoveEvent.getTo().getZ())))
  775.       {
  776.         paramPlayerMoveEvent.setTo(paramPlayerMoveEvent.getFrom());
  777.       }
  778.     }
  779.   }
  780.  
  781.   @EventHandler
  782.   public void onDamage(EntityDamageEvent paramEntityDamageEvent)
  783.   {
  784.     if (((paramEntityDamageEvent.getEntity() instanceof Player)) &&
  785.       (this.main.getManager().getGame((Player)paramEntityDamageEvent.getEntity()) != null) && (paramEntityDamageEvent.getCause() != EntityDamageEvent.DamageCause.CUSTOM)) {
  786.       paramEntityDamageEvent.setCancelled(true);
  787.     }
  788.   }
  789.  
  790.   @EventHandler
  791.   public void onFoodChange(FoodLevelChangeEvent paramFoodLevelChangeEvent)
  792.   {
  793.     if (((paramFoodLevelChangeEvent.getEntity() instanceof Player)) &&
  794.       (this.main.getManager().getGame((Player)paramFoodLevelChangeEvent.getEntity()) != null)) {
  795.       paramFoodLevelChangeEvent.setFoodLevel(20);
  796.     }
  797.   }
  798.  
  799.   @EventHandler
  800.   public void onHealthRegain(EntityRegainHealthEvent paramEntityRegainHealthEvent)
  801.   {
  802.     if (((paramEntityRegainHealthEvent.getEntity() instanceof Player)) &&
  803.       (this.main.getManager().getGame((Player)paramEntityRegainHealthEvent.getEntity()) != null)) {
  804.       paramEntityRegainHealthEvent.setCancelled(true);
  805.     }
  806.   }
  807.  
  808.   @EventHandler
  809.   public void onEntityBreak(HangingBreakByEntityEvent paramHangingBreakByEntityEvent)
  810.   {
  811.     if (paramHangingBreakByEntityEvent.getRemover().getType() == EntityType.PLAYER)
  812.     {
  813.       Player localPlayer = (Player)paramHangingBreakByEntityEvent.getRemover();
  814.       Game localGame = this.main.getManager().getGame(localPlayer);
  815.       if (localGame != null) {
  816.         paramHangingBreakByEntityEvent.setCancelled(true);
  817.       }
  818.     }
  819.   }
  820.  
  821.   @EventHandler
  822.   public void onEntityBreak(HangingBreakEvent paramHangingBreakEvent)
  823.   {
  824.     if (paramHangingBreakEvent.getCause() != HangingBreakEvent.RemoveCause.ENTITY) {
  825.       paramHangingBreakEvent.setCancelled(true);
  826.     }
  827.   }
  828.  
  829.   @EventHandler
  830.   public void onPick(PlayerPickupItemEvent paramPlayerPickupItemEvent)
  831.   {
  832.     Player localPlayer = paramPlayerPickupItemEvent.getPlayer();
  833.     Game localGame = this.main.getManager().getGame(localPlayer);
  834.     if (localGame != null)
  835.     {
  836.       paramPlayerPickupItemEvent.setCancelled(true);
  837.       if ((!localGame.getSpectators().contains(localPlayer)) && (
  838.         (localGame.getState() == GameState.IN_GAME) || (localGame.getState() == GameState.ROUND)))
  839.       {
  840.         org.bukkit.entity.Item localItem = paramPlayerPickupItemEvent.getItem();
  841.         ItemStack localItemStack = paramPlayerPickupItemEvent.getItem().getItemStack();
  842.         if ((localItemStack.getType() == Material.SHEARS) && (this.main.getManager().getTeam(localGame, localPlayer) == GameTeam.Role.COUNTERTERRORIST))
  843.         {
  844.           localItem.remove();
  845.           localGame.getDrops().remove(localItem);
  846.           localPlayer.getInventory().setItem(5, localItemStack);
  847.           localPlayer.playSound(localPlayer.getLocation(), SpigotSound.ITEM_PICKUP.getSound(), 5.0F, 1.0F);
  848.         }
  849.         else
  850.         {
  851.           if (((localItemStack.getType() == Material.QUARTZ) || (localItemStack.getType() == Material.GOLDEN_APPLE)) && (this.main.getManager().getTeam(localGame, localPlayer) == GameTeam.Role.TERRORIST))
  852.           {
  853.             localItem.remove();
  854.             localGame.getDrops().remove(localItem);
  855.             if ((localItemStack.getType() == Material.QUARTZ) && (this.main.getManager().isInBombArea(localGame, localItem.getLocation())))
  856.             {
  857.               localObject = localItemStack.getItemMeta();
  858.               ((ItemMeta)localObject).setDisplayName("�e?�a " + Messages.ITEM_BOMB_NAME + " �8(�c" + Messages.ITEM_RIGHT_CLICK + "�8)");
  859.               localItemStack.setItemMeta((ItemMeta)localObject);
  860.               localItemStack.setType(Material.GOLDEN_APPLE);
  861.             }
  862.             if ((localItemStack.getType() == Material.GOLDEN_APPLE) && (!this.main.getManager().isInBombArea(localGame, localItem.getLocation())))
  863.             {
  864.               localObject = localItemStack.getItemMeta();
  865.               ((ItemMeta)localObject).setDisplayName("�e?�a " + Messages.ITEM_BOMB_NAME);
  866.               localItemStack.setItemMeta((ItemMeta)localObject);
  867.               localItemStack.setType(Material.QUARTZ);
  868.             }
  869.             for (Iterator localIterator = this.main.getManager().getTeam(localGame, GameTeam.Role.TERRORIST).getPlayers().iterator(); localIterator.hasNext();)
  870.             {
  871.               localObject = (Player)localIterator.next();
  872.               ((Player)localObject).playSound(((Player)localObject).getLocation(), "cs.gamesounds.pickedupthebomb", 1.0F, 1.0F);
  873.             }
  874.             localGame.getBomb().setCarrier(localPlayer);
  875.             localPlayer.getInventory().setItem(5, localItemStack);
  876.             return;
  877.           }
  878.           Object localObject = this.main.getGrenade(localItemStack);
  879.           if ((localObject != null) && (localGame.getDrops().get(localItem) != null))
  880.           {
  881.             int i = ((Grenade)localObject).getGrenadeType().getSlot();
  882.             if (localPlayer.getInventory().getItem(i) == null)
  883.             {
  884.               paramPlayerPickupItemEvent.setCancelled(true);
  885.               localPlayer.getInventory().setItem(i, localItemStack);
  886.               localGame.getDrops().remove(localItem);
  887.               localItem.remove();
  888.               localPlayer.playSound(localPlayer.getLocation(), SpigotSound.ITEM_PICKUP.getSound(), 5.0F, 1.0F);
  889.             }
  890.           }
  891.           Gun localGun = this.main.getGun(localItemStack);
  892.           Integer localInteger = (Integer)localGame.getDrops().get(localItem);
  893.           if ((localGun != null) && (localInteger != null))
  894.           {
  895.             int j = localGun.getGunType().getID().intValue();
  896.             if (localPlayer.getInventory().getItem(j) == null)
  897.             {
  898.               paramPlayerPickupItemEvent.setCancelled(true);
  899.               localItemStack.setAmount(localInteger.intValue() + 1);
  900.               localPlayer.getInventory().setItem(j, localItemStack);
  901.               localGame.getDrops().remove(localItem);
  902.               localItem.remove();
  903.               localPlayer.playSound(localPlayer.getLocation(), SpigotSound.ITEM_PICKUP.getSound(), 5.0F, 1.0F);
  904.             }
  905.           }
  906.         }
  907.       }
  908.     }
  909.   }
  910.  
  911.   @EventHandler
  912.   public void onDrop(PlayerDropItemEvent paramPlayerDropItemEvent)
  913.   {
  914.     Player localPlayer = paramPlayerDropItemEvent.getPlayer();
  915.     Game localGame = this.main.getManager().getGame(localPlayer);
  916.     if (localGame != null)
  917.     {
  918.       int i = localPlayer.getInventory().getHeldItemSlot();
  919.       ItemStack localItemStack = paramPlayerDropItemEvent.getItemDrop().getItemStack();
  920.       int j = localPlayer.getInventory().getItemInHand().getAmount();
  921.       if ((localGame.getState() == GameState.IN_GAME) || (localGame.getState() == GameState.ROUND))
  922.       {
  923.         if (localItemStack.getType() == Material.SHEARS)
  924.         {
  925.           localGame.getDrops().put(paramPlayerDropItemEvent.getItemDrop(), Integer.valueOf(1));
  926.           localPlayer.getInventory().setItem(5, ItemBuilder.create(Material.GOLD_NUGGET, 1, "&a" + Messages.ITEM_SHEAR_NAME + " &7?", false));
  927.           return;
  928.         }
  929.         if ((localItemStack.getType() == Material.QUARTZ) || (localItemStack.getType() == Material.GOLDEN_APPLE))
  930.         {
  931.           if (localItemStack.getType() == Material.GOLDEN_APPLE)
  932.           {
  933.             localObject1 = localItemStack.getItemMeta();
  934.             ((ItemMeta)localObject1).setDisplayName("�e?�a " + Messages.ITEM_BOMB_NAME);
  935.             localItemStack.setItemMeta((ItemMeta)localObject1);
  936.             localItemStack.setType(Material.QUARTZ);
  937.           }
  938.           localGame.getDrops().put(paramPlayerDropItemEvent.getItemDrop(), Integer.valueOf(1));
  939.           localGame.getBomb().setDrop(paramPlayerDropItemEvent.getItemDrop());
  940.           for (localObject2 = this.main.getManager().getTeam(localGame, GameTeam.Role.TERRORIST).getPlayers().iterator(); ((Iterator)localObject2).hasNext();)
  941.           {
  942.             localObject1 = (Player)((Iterator)localObject2).next();
  943.             ((Player)localObject1).playSound(((Player)localObject1).getLocation(), "cs.gamesounds.bombdroppedyourteam", 1.0F, 1.0F);
  944.           }
  945.           for (localObject2 = this.main.getManager().getTeam(localGame, GameTeam.Role.COUNTERTERRORIST).getPlayers().iterator(); ((Iterator)localObject2).hasNext();)
  946.           {
  947.             localObject1 = (Player)((Iterator)localObject2).next();
  948.             ((Player)localObject1).playSound(((Player)localObject1).getLocation(), "cs.gamesounds.bombdroppedenemyteam", 1.0F, 1.0F);
  949.           }
  950.           return;
  951.         }
  952.         localObject1 = this.main.getGun(localItemStack);
  953.         if (localObject1 != null)
  954.         {
  955.           localGame.getDrops().put(paramPlayerDropItemEvent.getItemDrop(), Integer.valueOf(j));
  956.           localItemStack.setAmount(1);
  957.           localPlayer.setExp(0.0F);
  958.           ((Gun)localObject1).resetDelay(localPlayer);
  959.           paramPlayerDropItemEvent.getItemDrop().setItemStack(ItemBuilder.create(localItemStack.getType(), 1, ((Gun)localObject1).getItem().getData(), localItemStack.getItemMeta().getDisplayName()));
  960.           localPlayer.getInventory().setItem(i, null);
  961.           localPlayer.playSound(localPlayer.getLocation(), "cs.gamesounds.droppedagun", 1.0F, 1.0F);
  962.           if (((Gun)localObject1).hasSnipe()) {
  963.             this.main.getVersionInterface().sendFakeItem(localPlayer, 5, localPlayer.getInventory().getHelmet());
  964.           }
  965.           return;
  966.         }
  967.         Object localObject2 = this.main.getGrenade(localItemStack);
  968.         if (localObject2 != null)
  969.         {
  970.           localGame.getDrops().put(paramPlayerDropItemEvent.getItemDrop(), Integer.valueOf(1));
  971.           localItemStack.setAmount(1);
  972.           paramPlayerDropItemEvent.getItemDrop().setItemStack(ItemBuilder.create(localItemStack.getType(), 1, ((Grenade)localObject2).getItem().getData(), localItemStack.getItemMeta().getDisplayName()));
  973.           localPlayer.getInventory().setItem(i, null);
  974.           localPlayer.playSound(localPlayer.getLocation(), "cs.gamesounds.droppedagun", 1.0F, 1.0F);
  975.           return;
  976.         }
  977.       }
  978.       Object localObject1 = localItemStack.clone();
  979.       paramPlayerDropItemEvent.getItemDrop().remove();
  980.       localPlayer.getInventory().setItem(localPlayer.getInventory().getHeldItemSlot(), (ItemStack)localObject1);
  981.     }
  982.   }
  983.  
  984.   @EventHandler
  985.   public void onSneak(PlayerToggleSneakEvent paramPlayerToggleSneakEvent)
  986.   {
  987.     Player localPlayer = paramPlayerToggleSneakEvent.getPlayer();
  988.     Game localGame = this.main.getManager().getGame(localPlayer);
  989.     if (localGame != null)
  990.     {
  991.       ItemStack localItemStack = localPlayer.getInventory().getItemInHand();
  992.       Gun localGun = this.main.getGun(localItemStack);
  993.       if ((localGun != null) &&
  994.         (localGun.hasSnipe())) {
  995.         if (paramPlayerToggleSneakEvent.isSneaking())
  996.         {
  997.           localPlayer.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 1));
  998.           localPlayer.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Integer.MAX_VALUE, 2));
  999.           this.main.getVersionInterface().sendFakeItem(localPlayer, 5, new ItemStack(Material.PUMPKIN));
  1000.         }
  1001.         else
  1002.         {
  1003.           localPlayer.removePotionEffect(PotionEffectType.SLOW);
  1004.           localPlayer.removePotionEffect(PotionEffectType.BLINDNESS);
  1005.           this.main.getVersionInterface().sendFakeItem(localPlayer, 5, localPlayer.getInventory().getHelmet());
  1006.         }
  1007.       }
  1008.     }
  1009.   }
  1010.  
  1011.   @EventHandler(priority=EventPriority.MONITOR)
  1012.   public void onInteract(PlayerInteractAtEntityEvent paramPlayerInteractAtEntityEvent)
  1013.   {
  1014.     Player localPlayer = paramPlayerInteractAtEntityEvent.getPlayer();
  1015.     ItemStack localItemStack = localPlayer.getInventory().getItemInHand();
  1016.     Game localGame = this.main.getManager().getGame(localPlayer);
  1017.     if ((localGame != null) && (localItemStack != null) && (localItemStack.getType() != Material.AIR))
  1018.     {
  1019.       paramPlayerInteractAtEntityEvent.setCancelled(true);
  1020.       if (((localItemStack.getType() == Material.SHEARS) || (localItemStack.getType() == Material.GOLD_NUGGET)) && (paramPlayerInteractAtEntityEvent.getRightClicked().getType() == EntityType.valueOf("ARMOR_STAND")) &&
  1021.         (this.main.getManager().getTeam(localGame, GameTeam.Role.COUNTERTERRORIST).getPlayers().contains(localPlayer)) &&
  1022.         (!localGame.isDefusing(localPlayer)) && (localPlayer.getLocation().distance(localGame.getBomb().getLocation()) <= 2.0D))
  1023.       {
  1024.         localGame.addDefuser(localPlayer, localItemStack.getType() == Material.SHEARS ? 5 : 10);
  1025.         localPlayer.playSound(localPlayer.getLocation(), SpigotSound.LEVEL_UP.getSound(), 1.0F, 1.0F);
  1026.       }
  1027.       Gun localGun = this.main.getGun(localItemStack);
  1028.       if ((localGun != null) && (!localGame.isDefusing(localPlayer)) && (localGame.getState() == GameState.IN_GAME)) {
  1029.         localGun.shot(localGame, localPlayer);
  1030.       }
  1031.     }
  1032.   }
  1033.  
  1034.   @EventHandler
  1035.   public void onPsyhics(BlockPhysicsEvent paramBlockPhysicsEvent)
  1036.   {
  1037.     if (paramBlockPhysicsEvent.getBlock().getType() == Material.CROPS) {
  1038.       paramBlockPhysicsEvent.setCancelled(true);
  1039.     }
  1040.   }
  1041.  
  1042.   @EventHandler
  1043.   public void onResourcePack(PlayerResourcePackStatusEvent paramPlayerResourcePackStatusEvent)
  1044.   {
  1045.     if (this.main.canForceTexture())
  1046.     {
  1047.       Player localPlayer = paramPlayerResourcePackStatusEvent.getPlayer();
  1048.       if (paramPlayerResourcePackStatusEvent.getStatus() == PlayerResourcePackStatusEvent.Status.DECLINED)
  1049.       {
  1050.         localPlayer.sendMessage(Messages.TEXTURE_DECLINED.toString());
  1051.         if (this.main.getManager().isBungeeMode()) {
  1052.           this.main.getServer().getPluginManager().callEvent(new GameLeaveEvent(localPlayer));
  1053.         }
  1054.       }
  1055.       if (paramPlayerResourcePackStatusEvent.getStatus() == PlayerResourcePackStatusEvent.Status.ACCEPTED) {
  1056.         localPlayer.sendMessage(Messages.TEXTURE_ACCEPTED.toString());
  1057.       }
  1058.       if (paramPlayerResourcePackStatusEvent.getStatus() == PlayerResourcePackStatusEvent.Status.FAILED_DOWNLOAD)
  1059.       {
  1060.         localPlayer.sendMessage(Messages.TEXTURE_FAILED.toString());
  1061.         if (this.main.getManager().isBungeeMode()) {
  1062.           this.main.getServer().getPluginManager().callEvent(new GameLeaveEvent(localPlayer));
  1063.         }
  1064.       }
  1065.       if (paramPlayerResourcePackStatusEvent.getStatus() == PlayerResourcePackStatusEvent.Status.SUCCESSFULLY_LOADED)
  1066.       {
  1067.         localPlayer.sendMessage(Messages.TEXTURE_LOADED.toString());
  1068.         this.main.getTextureUsers().add(localPlayer.getUniqueId());
  1069.       }
  1070.     }
  1071.   }
  1072.  
  1073.   @EventHandler
  1074.   public void onSignPlace(SignChangeEvent paramSignChangeEvent)
  1075.   {
  1076.     Player localPlayer = paramSignChangeEvent.getPlayer();
  1077.     if ((paramSignChangeEvent.getLine(0).equals("[CounterStrike]")) && (localPlayer.hasPermission("cs.sign"))) {
  1078.       try
  1079.       {
  1080.         int i = Integer.valueOf(paramSignChangeEvent.getLine(1)).intValue();
  1081.         localObject1 = this.main.getManager().getGame(i);
  1082.         if (localObject1 != null)
  1083.         {
  1084.           localLocation = paramSignChangeEvent.getBlock().getLocation();
  1085.           ((Game)localObject1).getSigns().add(localLocation);
  1086.           paramSignChangeEvent.setLine(0, Messages.SIGN_FIRST.toString().replace("%prefix%", Messages.PREFIX.toString()).replace("%name%", ((Game)localObject1).getName()).replace("%state%", ((Game)localObject1).getState().getState()).replace("%min%", ((Game)localObject1).getTeamA().size() + ((Game)localObject1).getTeamB().size()).replace("%max%", ((Game)localObject1).getMaxPlayers()));
  1087.           paramSignChangeEvent.setLine(1, Messages.SIGN_SECOND.toString().replace("%prefix%", Messages.PREFIX.toString()).replace("%name%", ((Game)localObject1).getName()).replace("%state%", ((Game)localObject1).getState().getState()).replace("%min%", ((Game)localObject1).getTeamA().size() + ((Game)localObject1).getTeamB().size()).replace("%max%", ((Game)localObject1).getMaxPlayers()));
  1088.           paramSignChangeEvent.setLine(2, Messages.SIGN_THIRD.toString().replace("%prefix%", Messages.PREFIX.toString()).replace("%name%", ((Game)localObject1).getName()).replace("%state%", ((Game)localObject1).getState().getState()).replace("%min%", ((Game)localObject1).getTeamA().size() + ((Game)localObject1).getTeamB().size()).replace("%max%", ((Game)localObject1).getMaxPlayers()));
  1089.           paramSignChangeEvent.setLine(3, Messages.SIGN_FOURTH.toString().replace("%prefix%", Messages.PREFIX.toString()).replace("%name%", ((Game)localObject1).getName()).replace("%state%", ((Game)localObject1).getState().getState()).replace("%min%", ((Game)localObject1).getTeamA().size() + ((Game)localObject1).getTeamB().size()).replace("%max%", ((Game)localObject1).getMaxPlayers()));
  1090.           localObject2 = this.main.getGameDatabase().getStringList("Signs");
  1091.           ((List)localObject2).add(i + "," + localLocation.getWorld().getName() + "," + localLocation.getBlockX() + "," + localLocation.getBlockY() + "," + localLocation.getBlockZ());
  1092.           this.main.getGameDatabase().set("Signs", localObject2);
  1093.           this.main.saveGameDatabase();
  1094.           localPlayer.sendMessage(Messages.PREFIX + " �aSign created succefully!");
  1095.         }
  1096.         else
  1097.         {
  1098.           paramSignChangeEvent.setCancelled(true);
  1099.           localPlayer.sendMessage(Messages.PREFIX + " �cThe game dosen't exist!");
  1100.         }
  1101.       }
  1102.       catch (Exception localException)
  1103.       {
  1104.         Location localLocation;
  1105.         Object localObject2;
  1106.         Object localObject1 = paramSignChangeEvent.getLine(1);
  1107.         if ((localObject1 != null) && (((String)localObject1).equalsIgnoreCase("QuickJoin")))
  1108.         {
  1109.           localLocation = paramSignChangeEvent.getBlock().getLocation();
  1110.           paramSignChangeEvent.setLine(0, Messages.PREFIX.toString());
  1111.           paramSignChangeEvent.setLine(1, "�5� �0" + Messages.SIGN_QUICKJOIN.toString() + " �5�");
  1112.           localObject2 = localLocation.getWorld().getName() + "," + localLocation.getBlockX() + "," + localLocation.getBlockY() + "," + localLocation.getBlockZ();
  1113.           List localList = this.main.getGameDatabase().getStringList("QuickJoinSigns");
  1114.           localList.add(localObject2);
  1115.           this.main.getGameDatabase().set("QuickJoinSigns", localList);
  1116.           this.main.saveGameDatabase();
  1117.           this.main.getManager().getQuickJoinSigns().add(localLocation);
  1118.           localPlayer.sendMessage(Messages.PREFIX + " �aQuick-Sign created succefully!");
  1119.         }
  1120.         else
  1121.         {
  1122.           localPlayer.sendMessage(Messages.PREFIX + " �cGame ID invalid!");
  1123.         }
  1124.         return;
  1125.       }
  1126.     }
  1127.   }
  1128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement