Package com.comphenix.protocol.injector.player

Examples of com.comphenix.protocol.injector.player.NetworkObjectInjector


   * @param player - injected player.
   * @param createNew - whether or not to create a new injector if the current is missing.
   * @return The injector.
   */
  NetworkObjectInjector getInjector(Player player, boolean createNew) {
    NetworkObjectInjector injector = playerInjector.get(player);
   
    if (injector == null && createNew) {
      // Check for temporary players ..
      if ((player instanceof Factory))
        throw new IllegalArgumentException("Cannot inject tempoary player " + player);
     
      try {
        NetworkObjectInjector created = new NetworkObjectInjector(
          filterImpossibleWarnings(reporter), null, invoker, null);
     
        created.initializePlayer(player);
       
        if (created.getNetworkManager() == null)
          throw new PlayerLoggedOutException("Player " + player + " has logged out.");
        injector = saveInjector(created.getNetworkManager(), created);
       
      } catch (IllegalAccessException e) {
        throw new RuntimeException("Cannot create dummy injector.", e);
      }
    }
View Full Code Here


   * @param networkManager - a INetworkManager object.
   * @param connection - a Connection (PlayerConnection, PendingConnection) object.
   * @return The created NetworkObjectInjector with a temporary player.
   */
  NetworkObjectInjector getInjector(Object networkManager, Object connection) {
    NetworkObjectInjector dummyInjector = networkManagerInjector.get(networkManager);
   
    if (dummyInjector == null) {
      // Inject the network manager
      try {
        NetworkObjectInjector created = new NetworkObjectInjector(
            filterImpossibleWarnings(reporter), null, invoker, null);
       
        if (MinecraftReflection.isLoginHandler(connection)) {
          created.initialize(connection);
          created.setPlayer(created.createTemporaryPlayer(server));
        } else if (MinecraftReflection.isServerHandler(connection)) {
          // Get the player instead
          if (playerConnectionPlayer == null)
            playerConnectionPlayer = FuzzyReflection.fromObject(connection).
                getFieldByType("player", MinecraftReflection.getEntityPlayerClass());
          Object entityPlayer = playerConnectionPlayer.get(connection);
         
          created.initialize(MinecraftReflection.getBukkitEntity(entityPlayer));
         
        } else {
          throw new IllegalArgumentException("Unregonized connection in NetworkManager.");
        }
       
View Full Code Here

   * @param created - the created network object creator.
   * @return Any other network injector that came before us.
   */
  private NetworkObjectInjector saveInjector(Object networkManager, NetworkObjectInjector created) {
    // Concurrency - use the same injector!
    NetworkObjectInjector result = networkManagerInjector.putIfAbsent(networkManager, created);
 
    if (result == null) {
      result = created;
    }
   
View Full Code Here

   * Called when a player has logged in properly.
   * @param player - the player that has logged in.
   */
  void injectPlayer(Player player) {
    try {
      NetworkObjectInjector dummy = new NetworkObjectInjector(
          filterImpossibleWarnings(reporter), player, invoker, null);
      dummy.initializePlayer(player);
     
      // Save this player for the network manager
      NetworkObjectInjector realInjector = networkManagerInjector.get(dummy.getNetworkManager());
     
      if (realInjector != null) {
        // Update all future references
        realInjector.setUpdatedPlayer(player);
        playerInjector.put(player, realInjector);
      } else {
        // Ah - in that case, save this injector
        saveInjector(dummy.getNetworkManager(), dummy);
      }
View Full Code Here

  /**
   * Uninject the given player.
   * @param player - the player to uninject.
   */
  void uninjectPlayer(Player player) {
    final NetworkObjectInjector injector = getInjector(player, false);
   
    if (player != null && injector != null) {
      Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
        @Override
        public void run() {
View Full Code Here

   * @param marker - the network marker object.
   * @param filters - whether or not to invoke the packet listeners.
   * @throws InvocationTargetException If anything went wrong.
   */
  void sendServerPacket(Player receiver, PacketContainer packet, NetworkMarker marker, boolean filters) throws InvocationTargetException {
    NetworkObjectInjector networkObject = getInjector(receiver, true);
   
    // If TRUE, process this packet like any other
    if (filters)
      ignoredPackets.remove(packet.getHandle());
    else
      ignoredPackets.add(packet.getHandle());
     
    networkObject.sendServerPacket(packet.getHandle(), marker, filters);
  }
View Full Code Here

   * @param mcPacket - the packet to receieve.
   * @throws IllegalAccessException Reflection is not permitted.
   * @throws InvocationTargetException Minecraft threw an exception.
   */
  void processPacket(Player player, Object mcPacket) throws IllegalAccessException, InvocationTargetException {
    NetworkObjectInjector networkObject = getInjector(player, true);
   
    // We will always ignore this packet
    ignoredPackets.add(mcPacket);
    networkObject.processPacket(mcPacket);
  }
View Full Code Here

TOP

Related Classes of com.comphenix.protocol.injector.player.NetworkObjectInjector

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.