Package appeng.core.sync.network

Source Code of appeng.core.sync.network.NetworkHandler

package appeng.core.sync.network;

import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.NetHandlerPlayServer;
import appeng.core.WorldSettings;
import appeng.core.sync.AppEngPacket;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
import cpw.mods.fml.common.network.FMLEventChannel;
import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent.ServerConnectionFromClientEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent;
import cpw.mods.fml.common.network.NetworkRegistry;

public class NetworkHandler
{

  public static NetworkHandler instance;

  final FMLEventChannel ec;
  final String myChannelName;

  final IPacketHandler clientHandler;
  final IPacketHandler serveHandler;

  public NetworkHandler(String channelName) {
    FMLCommonHandler.instance().bus().register( this );
    ec = NetworkRegistry.INSTANCE.newEventDrivenChannel( myChannelName = channelName );
    ec.register( this );

    clientHandler = createClientSide();
    serveHandler = createServerSide();
  }

  private IPacketHandler createServerSide()
  {
    try
    {
      return new AppEngServerPacketHandler();
    }
    catch (Throwable t)
    {
      return null;
    }
  }

  private IPacketHandler createClientSide()
  {
    try
    {
      return new AppEngClientPacketHandler();
    }
    catch (Throwable t)
    {
      return null;
    }
  }

  @SubscribeEvent
  public void newConnection(ServerConnectionFromClientEvent ev)
  {
    WorldSettings.getInstance().sendToPlayer( ev.manager, null );
  }

  @SubscribeEvent
  public void newConnection(PlayerLoggedInEvent loginEvent)
  {
    if ( loginEvent.player instanceof EntityPlayerMP )
      WorldSettings.getInstance().sendToPlayer( null, (EntityPlayerMP) loginEvent.player );
  }

  @SubscribeEvent
  public void serverPacket(ServerCustomPacketEvent ev)
  {
    NetHandlerPlayServer srv = (NetHandlerPlayServer) ev.packet.handler();
    if ( serveHandler != null )
      serveHandler.onPacketData( null, ev.packet, srv.playerEntity );
  }

  @SubscribeEvent
  public void clientPacket(ClientCustomPacketEvent ev)
  {
    if ( clientHandler != null )
      clientHandler.onPacketData( null, ev.packet, null );
  }

  public String getChannel()
  {
    return myChannelName;
  }

  public void sendToAll(AppEngPacket message)
  {
    ec.sendToAll( message.getProxy() );
  }

  public void sendTo(AppEngPacket message, EntityPlayerMP player)
  {
    ec.sendTo( message.getProxy(), player );
  }

  public void sendToAllAround(AppEngPacket message, NetworkRegistry.TargetPoint point)
  {
    ec.sendToAllAround( message.getProxy(), point );
  }

  public void sendToDimension(AppEngPacket message, int dimensionId)
  {
    ec.sendToDimension( message.getProxy(), dimensionId );
  }

  public void sendToServer(AppEngPacket message)
  {
    ec.sendToServer( message.getProxy() );
  }

}
TOP

Related Classes of appeng.core.sync.network.NetworkHandler

TOP
Copyright © 2018 www.massapi.com. 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.