/** * Flicker the player for anyone in a set of players who can see him. * * @param player * @param forWhom */ public static void refreshPlayer(Player player, Set<Player> forWhom) { TagAPI.check(); if (player == null) { throw new TagAPIException("Can't submit null player!"); } if ((forWhom == null) || forWhom.isEmpty()) { throw new TagAPIException("Can't submit empty forWhom!"); } for (final Player whom : forWhom) { if ((whom != null) && (!player.equals(whom))) { TagAPI.refreshPlayer(player, whom); } } }
/** * Flicker the player for anyone who can see him. * * @param player */ public static void refreshPlayer(Player player) { TagAPI.check(); if (player == null) { throw new TagAPIException("Can't submit null player!"); } if (!player.isOnline()) { throw new TagAPIException("Can't submit offline player!"); } final ShowBomb bomb = TagAPI.instance.new ShowBomb(); for (final Player otherGuy : player.getWorld().getPlayers()) { if ((!otherGuy.equals(player)) && otherGuy.canSee(player)) { otherGuy.hidePlayer(player); bomb.queue(TagAPI.instance.new RefreshPair(otherGuy, player)); } } TagAPI.instance.getServer().getScheduler().scheduleSyncDelayedTask(TagAPI.instance, bomb, 2); }
/** * Flicker the player for a player who can see him. * * @param player * @param forWhom */ public static void refreshPlayer(Player player, Player forWhom) { TagAPI.check(); if (player == null) { throw new TagAPIException("Can't submit null player!"); } if (forWhom == null) { throw new TagAPIException("Can't submit null forWhom!"); } if (player.equals(forWhom)) { throw new TagAPIException("Can't submit player on self!"); } final ShowBomb bomb = TagAPI.instance.new ShowBomb(); if (forWhom.canSee(player) && player.getWorld().equals(forWhom.getWorld())) { forWhom.hidePlayer(player); bomb.queue(TagAPI.instance.new RefreshPair(forWhom, player)); } TagAPI.instance.getServer().getScheduler().scheduleSyncDelayedTask(TagAPI.instance, bomb, 2); }
@Override public void refresh(Player p) { org.kitteh.tag.TagAPI.refreshPlayer(p); }
@EventHandler(priority = EventPriority.HIGHEST) private void onInteract(PlayerInteractEvent event) { final Player player = event.getPlayer(); PlayerDataClass playerData = plugin.getPlayerHandler().findPlayer(player.getDisplayName()); if (playerData.getType() != null) { if (player.getItemInHand().getType() == Material.BOW && event.getAction() == Action.RIGHT_CLICK_BLOCK && (inJump.get(player) == null || inJump.get(player).equals(Boolean.FALSE)) && playerData.getType().equalsIgnoreCase("soldier")) { if (player.getInventory().contains(Material.ARROW)) { player.getInventory().removeItem(new ItemStack(Material.ARROW, 1)); player.updateInventory(); player .getLocation() .getWorld() .createExplosion( player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ(), 0); // double rotation = player.getLocation().getPitch(); // double jumpFactor = -(rotation / 20); // double distanceFactor = -((90 - rotation) * 10); Vector newDirection = player.getVelocity(); inJump.put(player, true); /*if (jumpFactor < -1) { newDirection.setY(newDirection.getY() * jumpFactor); } if (distanceFactor < -1) { newDirection.setX(newDirection.getX() * distanceFactor); newDirection.setZ(newDirection.getZ() * distanceFactor); } player.setVelocity(newDirection);*/ Vector jumpDirection = player.getLocation().getDirection().multiply(-1.5); jumpDirection.setX(jumpDirection.getX() * 1.4); jumpDirection.setZ(jumpDirection.getZ() * 1.4); newDirection.setX(newDirection.getX() * -jumpDirection.getX()); newDirection.setY(newDirection.getY() * -jumpDirection.getY()); newDirection.setZ(newDirection.getZ() * -jumpDirection.getZ()); player.setVelocity(jumpDirection); player.damage(3); plugin .getServer() .getScheduler() .scheduleSyncDelayedTask( plugin, new Runnable() { public void run() { inJump.put(player, false); } }, 10L); return; } } /* if (player.getItemInHand().getType() == Material.BOW && event.getAction() == Action.RIGHT_CLICK_AIR && playerData.getType().equalsIgnoreCase("soldier")) { if (player.getInventory().contains(Material.ARROW)) { player.getInventory().removeItem(new ItemStack (Material.ARROW, 1)); player.updateInventory(); //Location loc = player.getLocation(); // Get the player Location //loc.add(0, 1, 0); //Add 1 to the Y, makes the arrow go at chest level instead of feet Location arrowLocation = player.getEyeLocation(); arrowLocation.setY(arrowLocation.getY() + 0.1); Arrow sniperArrow = player.getWorld().spawnArrow(arrowLocation, player.getLocation().getDirection(), 0.6f, 1); sniperArrow.setShooter(player); sniperArrow.setBounce(false); //sniperArrow.setVelocity(player.getLocation().getDirection().normalize().multiply(12)); } return; } */ /*if (player.getItemInHand().getType() == Material.BOW && (event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK) && playerData.getType().equalsIgnoreCase("soldier")) { event.setCancelled(true); return; } */ if (player.getItemInHand().getType() == Material.IRON_SWORD && (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) && playerData.getType().equalsIgnoreCase("spy")) { plugin .getServer() .getWorld("world") .playEffect(player.getLocation(), Effect.EXTINGUISH, 40); if (playerData.getDisguised() == null) { if (playerData.getTeam() == "red") { if (plugin.getPlayerHandler().getBluePlayers().size() > 0) { plugin.getPlayerHandler().giveArmor(playerData.getName(), "blue"); Random random = new Random(); List<PlayerDataClass> temp = plugin.getPlayerHandler().getBluePlayers(); int randomNumber = random.nextInt(temp.size()); playerData.setDisguised(temp.get(randomNumber).getName()); plugin.getPlayerLocationListener().getRedPlayersOnPoint().remove(playerData); TagAPI.refreshPlayer(plugin.getServer().getPlayer(playerData.getName())); } else { plugin.getPlayerHandler().giveArmor(playerData.getName(), "blue"); playerData.setDisguised(playerData.getName()); TagAPI.refreshPlayer(plugin.getServer().getPlayer(playerData.getName())); } } if (playerData.getTeam() == "blue") { if (plugin.getPlayerHandler().getRedPlayers().size() > 0) { plugin.getPlayerHandler().giveArmor(playerData.getName(), "red"); Random random = new Random(); List<PlayerDataClass> temp = plugin.getPlayerHandler().getRedPlayers(); int randomNumber = random.nextInt(temp.size()); playerData.setDisguised(temp.get(randomNumber).getName()); TagAPI.refreshPlayer(plugin.getServer().getPlayer(playerData.getName())); } else { plugin.getPlayerHandler().giveArmor(playerData.getName(), "red"); playerData.setDisguised(playerData.getName()); TagAPI.refreshPlayer(plugin.getServer().getPlayer(playerData.getName())); } } return; } else { playerData.setDisguised(null); plugin.getPlayerHandler().giveArmor(playerData.getName(), playerData.getTeam()); TagAPI.refreshPlayer(plugin.getServer().getPlayer(playerData.getName())); return; } } if ((event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) && playerData.getType().equalsIgnoreCase("spy") && playerData.getDisguised() != null) { playerData.setDisguised(null); plugin.getPlayerHandler().giveArmor(playerData.getName(), playerData.getTeam()); TagAPI.refreshPlayer(plugin.getServer().getPlayer(playerData.getName())); return; } if (player.getItemInHand().getType() == Material.BOW && event.getAction() == Action.LEFT_CLICK_AIR && playerData.getType().equalsIgnoreCase("sniper")) { if (playerData.isScoped() == true) { setUnscoped(player, playerData); } else { setScoped(player, playerData); } } if (player.getItemInHand().getType() == Material.getMaterial(356) && (event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK) && playerData.getType().equalsIgnoreCase("demo")) { plugin.getLogger().info("demo fired"); Location stickyLocation = player.getEyeLocation(); stickyLocation.setY(stickyLocation.getY() + 0.1); Item sticky; if (playerData.getTeam().equals("red")) { sticky = player .getWorld() .dropItemNaturally( stickyLocation, new ItemStack( Material.INK_SACK, 1, (short) 0, (byte) (15 - DyeColor.RED.getData()))); sticky.setMetadata("redsticky", new FixedMetadataValue(plugin, true)); } else { sticky = player .getWorld() .dropItemNaturally( stickyLocation, new ItemStack( Material.INK_SACK, 1, (short) 0, (byte) (15 - DyeColor.BLUE.getData()))); sticky.setMetadata("bluesticky", new FixedMetadataValue(plugin, true)); } // stickyBomb.setData(dye); // Item sticky = player.getWorld().dropItem(stickyLocation, stickyBomb); sticky.setVelocity(player.getEyeLocation().getDirection()); StickyDataClass stickyData = new StickyDataClass(); stickyData.setOwner(playerData.getName()); stickyData.setSticky(sticky); stickyData.setTeam(playerData.getTeam()); plugin.getStickysFired().add(stickyData); } if (player.getItemInHand().getType() == Material.getMaterial(356) && (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) && playerData.getType().equalsIgnoreCase("demo")) { plugin.getLogger().info("demo triggered"); event.setCancelled(true); for (int i = 0; i < plugin.getStickysFired().size(); i++) { StickyDataClass temp = plugin.getStickysFired().get(i); plugin.getLogger().info(i + " Owner/Team " + temp.getOwner() + "/" + temp.getTeam()); if (temp.getOwner() == playerData.getName()) { plugin .getServer() .getWorld("world") .createExplosion( temp.getSticky().getLocation().getX(), temp.getSticky().getLocation().getY(), temp.getSticky().getLocation().getZ(), 5, false, false); for (Entity nearby : temp.getSticky().getNearbyEntities(3, 3, 3)) { if (nearby instanceof Player) { Player nearbyPlayer = (Player) nearby; nearbyPlayer.damage(8, player); } } temp.getSticky().remove(); plugin.getStickysFired().remove(i); } } } } else { return; } }
@SuppressWarnings("deprecation") public void joinGame(Player player, String name) { int rank = 1; try { rank = HyperPVP.getStorage() .readInt32("SELECT rank FROM users WHERE username = '******'"); } catch (SQLException e) { e.printStackTrace(); } if (this.type == GameType.FFA) { List<Session> first = this.getTeamMembers(this.teams.get(0).getColor()); if (first.size() >= this.maxPlayers && rank == 1) { System.out.println(this.maxPlayers); player.sendMessage( ChatColor.RED + "Teams full - " + ChatColor.GOLD + "hyperpvp.us/shop" + ChatColor.GREEN + " to join full teams or view other servers at " + ChatColor.GREEN + "hyperpvp.us/servers"); return; } } else { List<Session> first = this.getTeamMembers(this.teams.get(0).getColor()); List<Session> second = this.getTeamMembers(this.teams.get(1).getColor()); if ((first.size() + second.size()) >= this.maxPlayers && rank == 1) { System.out.println(this.maxPlayers); player.sendMessage( ChatColor.RED + "Teams full - " + ChatColor.GOLD + "hyperpvp.us/shop" + ChatColor.GREEN + " to join full teams or view other servers at " + ChatColor.GREEN + "hyperpvp.us/servers"); return; } } for (PotionEffect effect : player.getActivePotionEffects()) { player.removePotionEffect(effect.getType()); } if (HyperPVP.hasMatchBeenAnnounced()) { player.setGameMode(GameMode.SURVIVAL); } else { player.setGameMode(GameMode.CREATIVE); } player.getInventory().clear(); player.updateInventory(); Session session = new Session(player); HyperPVP.getSpectators().remove(player.getName()); CycleUtil.addGameSession(player, session); if (this.type == GameType.FFA) { session.setTeam(this.teams.get(0)); } else { if (name != null) { TeamMap team = this.getTeamByName(name); session.setTeam(team); } else { List<Session> first = this.getTeamMembers(this.teams.get(0).getColor()); List<Session> second = this.getTeamMembers(this.teams.get(1).getColor()); if (first.size() == second.size()) { session.setTeam(this.teams.get(0)); } else { if (first.size() > second.size()) { session.setTeam(this.teams.get(1)); } else session.setTeam(this.teams.get(0)); } } } /*if (HyperPVP.hasMatchBeenAnnounced()) { player.sendMessage(this.matchInfoToString(player)); }*/ player.sendMessage( ChatColor.GRAY + "You joined the " + session.getTeam().getColor() + HyperPVP.capitalize( session .getTeam() .getColor() .name() .toLowerCase() .replace("_", " ") .replace("dark ", "")) + " Team"); HyperPVP.setListName(session.getTeam().getColor(), player); TagAPI.refreshPlayer(player); player.setFallDistance(0F); if (HyperPVP.hasMatchBeenAnnounced()) { CycleUtil.hidePlayerWhereAppropriate(player, true); player.teleport(this.getRandomSpawn(player)); } if (!HyperPVP.hasMatchBeenAnnounced()) { player.getInventory().clear(); player.getInventory().addItem(new ItemStack(Material.COMPASS, 1)); player.updateInventory(); player.closeInventory(); } try { HyperPVP.getStorage() .executeQuery( "UPDATE servers SET team_one = '" + this.getTeamMembers(this.teams.get(0).getColor()).size() + "' WHERE bungee_name = '" + HyperPVP.getConfiguration().getConfig().getString("Server").toLowerCase() + "'"); if (this.type != GameType.FFA) { HyperPVP.getStorage() .executeQuery( "UPDATE servers SET team_two = '" + this.getTeamMembers(this.teams.get(1).getColor()).size() + "' WHERE bungee_name = '" + HyperPVP.getConfiguration().getConfig().getString("Server").toLowerCase() + "'"); } } catch (SQLException e) { e.printStackTrace(); } System.out.println(session.toValue()); }