apm2/src/main/java/com/kaijin/AdvPowerMan/ChannelHandler.java
2015-02-11 16:42:18 -05:00

62 lines
2.3 KiB
Java
Executable file

package com.kaijin.AdvPowerMan;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.network.NetHandlerPlayServer;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec;
import cpw.mods.fml.common.network.FMLOutboundHandler;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.relauncher.Side;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
public class ChannelHandler extends FMLIndexedMessageToMessageCodec<AdvPacket>
{
public static ChannelHandler instance = new ChannelHandler();
public ChannelHandler()
{
addDiscriminator(0, AdvPacket.class);
}
@Override
public void encodeInto(ChannelHandlerContext ctx, AdvPacket msg, ByteBuf target) throws Exception
{
target.writeBytes(msg.data);
}
@Override
public void decodeInto(ChannelHandlerContext ctx, ByteBuf source, AdvPacket msg)
{
switch (FMLCommonHandler.instance().getEffectiveSide())
{
case CLIENT:
AdvancedPowerManagement.instance.proxy.onPacketDataClient(source, ClientProxy.getPlayer());
break;
case SERVER:
NetHandlerPlayServer netHandler = (NetHandlerPlayServer)(ctx.channel().attr(NetworkRegistry.NET_HANDLER).get());
AdvancedPowerManagement.instance.proxy.onPacketDataClient(source, netHandler.playerEntity);
break;
}
}
public static void sendToServer(AdvPacket packet)
{
AdvancedPowerManagement.channels.get(Side.CLIENT).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.TOSERVER);
AdvancedPowerManagement.channels.get(Side.CLIENT).writeOutbound(packet);
}
public static void sendToPlayer(AdvPacket packet, EntityPlayer player)
{
AdvancedPowerManagement.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.PLAYER);
AdvancedPowerManagement.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGETARGS).set(player);
AdvancedPowerManagement.channels.get(Side.SERVER).writeOutbound(packet);
}
/*
public static void sendToAllPlayers(Packet packet)
{
AdvancedPowerManagement.channels.get(Side.SERVER).attr(FMLOutboundHandler.FML_MESSAGETARGET).set(FMLOutboundHandler.OutboundTarget.ALL);
AdvancedPowerManagement.channels.get(Side.SERVER).writeOutbound(packet);
}
*/
}