/** * Sends a packet to the given player. * * @param player the player * @param packet the packet */ public static void sendPacket(@Nonnull Player player, @Nonnull PacketContainer packet) { try { manager().sendServerPacket(player, packet); } catch (InvocationTargetException e) { throw new RuntimeException(e); } }
/** * Sends a packet to the given player. * * @param player the player * @param packet the packet */ public static void sendPacket(@Nonnull Player player, @Nonnull PacketContainer packet) { try { manager().sendServerPacket(player, packet); } catch (InvocationTargetException e) { throw new RuntimeException(e); } }
private void sendSilentPacket(Player player, PacketContainer packet) throws InvocationTargetException { ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, null, false); }
/** * Send a message without invoking the packet listeners. * @param player - the player to send it to. * @param message - the message to send. * @throws InvocationTargetException If we were unable to send the message. */ private void sendMessageSilently(Player player, String message) throws InvocationTargetException { try { for (PacketContainer packet : createChatPackets(message)) { manager.sendServerPacket(player, packet, false); } } catch (FieldAccessException e) { throw new InvocationTargetException(e); } }
/** * Send the current packet to the given receiver. * @param receiver - the receiver. * @throws RuntimeException If the packet cannot be sent. */ public void sendPacket(Player receiver) { try { ProtocolLibrary.getProtocolManager().sendServerPacket(receiver, getHandle()); } catch (InvocationTargetException e) { throw new RuntimeException("Cannot send packet.", e); } }
private void sendPackets(PacketContainer... packets) { try { ProtocolManager protocolManager = ProtocolLibrary.getProtocolManager(); for (PacketContainer packet : packets) { protocolManager.sendServerPacket(receiver, packet); } } catch (InvocationTargetException ex) { plugin.getLog().error("Exception sending instant skin change packet for: {}", receiver, ex); } }
public void run() { try { for (PacketContainer packet : entry.getValue()) { ProtocolLibrary.getProtocolManager().sendServerPacket(observer, packet, false); } } catch (InvocationTargetException e) { e.printStackTrace(); } if (isSpawnPacket) { PacketsManager.getPacketsHandler().removeCancel(disguise, observer); } } }, entry.getKey());
void sendPacket(PacketContainer packet) { //add metadata that we ignore our packets on the listener packet.addMetadata("ScoreboardStats", true); try { //false so we don't listen to our own packets ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet); } catch (InvocationTargetException ex) { //just log it for now. plugin.getLog().info("Failed to send packet", ex); } } }
public static void sendKeepAlive(List<Player> player) { for (Player p : player) { try { PacketContainer packet = get().createPacket(PacketType.Play.Client.KEEP_ALIVE); packet.getIntegers().write(0, random.nextInt()); get().sendServerPacket(p, packet); } catch (InvocationTargetException ex) { ex.printStackTrace(); } } }
@Override public void sendPacket(Player player, Object packet, boolean throughListeners) { if (isNPCPlayer(player) || PlayerUtil.isDisconnected(player)) { return; } PacketContainer toSend = new PacketContainer(getPacketType(packet.getClass()), packet); try { if (throughListeners) { // Send it through the listeners ProtocolLibrary.getProtocolManager().sendServerPacket(player, toSend); } else { // Silent - do not send it through listeners, only through monitors sendSilentPacket(player, toSend); } } catch (PlayerLoggedOutException ex) { // Ignore } catch (Exception e) { throw new RuntimeException("Error while sending packet:", e); } }
/** * Sends entity removal packets, as this disguise was removed */ public static void destroyEntity(TargetedDisguise disguise) { if (mainThread != Thread.currentThread()) throw new IllegalStateException("Cannot modify disguises on an async thread"); try { Object entityTrackerEntry = ReflectionManager.getEntityTrackerEntry(disguise.getEntity()); if (entityTrackerEntry == null) return; Set trackedPlayers = (Set) ReflectionManager.getNmsField("EntityTrackerEntry", "trackedPlayers") .get(entityTrackerEntry); // If the tracker exists. Remove himself from his tracker trackedPlayers = (Set) new HashSet(trackedPlayers).clone(); // Copy before iterating to prevent // ConcurrentModificationException PacketContainer destroyPacket = new PacketContainer(Server.ENTITY_DESTROY); destroyPacket.getIntegerArrays().write(0, new int[]{disguise.getEntity().getEntityId()}); for (Object p : trackedPlayers) { Player player = (Player) ReflectionManager.getBukkitEntity(p); if (player == disguise.getEntity() || disguise.canSee(player)) { ProtocolLibrary.getProtocolManager().sendServerPacket(player, destroyPacket); } } } catch (Exception ex) { ex.printStackTrace(); } }
/** * Prevent the observer from seeing a given entity. * * @param observer * - the player observer. * @param entity * - the entity to hide. * @return TRUE if the entity was previously visible, FALSE otherwise. */ public final boolean hideEntity(Player observer, Entity entity) { validate(observer, entity); boolean visibleBefore = setVisibility(observer, entity.getEntityId(), false); if (visibleBefore) { PacketContainer destroyEntity = new PacketContainer(ENTITY_DESTROY); destroyEntity.getIntegerArrays().write(0, new int[] { entity.getEntityId() }); // Make the entity disappear try { manager.sendServerPacket(observer, destroyEntity); } catch (InvocationTargetException e) { throw new RuntimeException("Cannot send server packet.", e); } } return visibleBefore; }
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, false); ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);
public TargetedDisguise addPlayer(String playername) { if (!disguiseViewers.contains(playername)) { disguiseViewers.add(playername); if (DisguiseAPI.isDisguiseInUse(this)) { DisguiseUtilities.checkConflicts(this, playername); DisguiseUtilities.refreshTracker(this, playername); if (isHidePlayer() && getEntity() instanceof Player) { try { Player player = Bukkit.getPlayerExact(playername); if (player != null) { PacketContainer deleteTab = new PacketContainer(PacketType.Play.Server.PLAYER_INFO); deleteTab.getPlayerInfoAction().write(0, canSee(player) ? PlayerInfoAction.REMOVE_PLAYER : PlayerInfoAction.ADD_PLAYER); deleteTab.getPlayerInfoDataLists().write(0, Arrays.asList( new PlayerInfoData(ReflectionManager.getGameProfile((Player) getEntity()), 0, NativeGameMode.SURVIVAL, WrappedChatComponent .fromText(DisguiseUtilities.getPlayerListName((Player) getEntity()))))); ProtocolLibrary.getProtocolManager().sendServerPacket(player, deleteTab); } } catch (InvocationTargetException e) { e.printStackTrace(); } } } } return this; }
public TargetedDisguise removePlayer(String playername) { if (disguiseViewers.contains(playername)) { disguiseViewers.remove(playername); if (DisguiseAPI.isDisguiseInUse(this)) { DisguiseUtilities.checkConflicts(this, playername); DisguiseUtilities.refreshTracker(this, playername); if (isHidePlayer() && getEntity() instanceof Player) { try { Player player = Bukkit.getPlayerExact(playername); if (player != null) { PacketContainer deleteTab = new PacketContainer(PacketType.Play.Server.PLAYER_INFO); deleteTab.getPlayerInfoAction().write(0, canSee(player) ? PlayerInfoAction.ADD_PLAYER : PlayerInfoAction.REMOVE_PLAYER); deleteTab.getPlayerInfoDataLists().write(0, Arrays.asList( new PlayerInfoData(ReflectionManager.getGameProfile((Player) getEntity()), 0, NativeGameMode.SURVIVAL, WrappedChatComponent .fromText(DisguiseUtilities.getPlayerListName((Player) getEntity()))))); ProtocolLibrary.getProtocolManager().sendServerPacket(player, deleteTab); } } catch (InvocationTargetException e) { e.printStackTrace(); } } } } return this; }
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet, false);
continue; ProtocolLibrary.getProtocolManager().sendServerPacket(player, deleteTab); ProtocolLibrary.getProtocolManager().sendServerPacket(player, addTab);
/** * Method to send a packet to the self disguise, translate his entity ID to the fake id. */ private static void sendSelfPacket(final Player player, final PacketContainer packet) { final Disguise disguise = DisguiseAPI.getDisguise(player, player); // If disguised. if (disguise == null) { return; } LibsPackets transformed = PacketsManager.getPacketsHandler().transformPacket(packet, disguise, player, player); try { if (transformed.isUnhandled()) transformed.addPacket(packet); transformed.setSpawnPacketCheck(packet.getType()); for (PacketContainer p : transformed.getPackets()) { p = p.deepClone(); p.getIntegers().write(0, DisguiseAPI.getSelfDisguiseId()); ProtocolLibrary.getProtocolManager().sendServerPacket(player, p, false); } transformed.sendDelayed(player); } catch (InvocationTargetException e) { e.printStackTrace(); } }
ProtocolLibrary.getProtocolManager().sendServerPacket(observer, packet, false);
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);