PacketChannel.java 文件源码

java
阅读 23 收藏 0 点赞 0 评论 0

项目:iChunUtil 作者:
public void registerPacket(String modId, int i, Class<? extends AbstractPacket> packetClass)
{
    packetCodec.addDiscriminator(i, packetClass);
    try
    {
        Side side = packetClass.newInstance().receivingSide();
        if(side == null)
        {
            FMLEmbeddedChannel channelServer = channels.get(Side.SERVER);
            String typeServer = channelServer.findChannelHandlerNameForType(AbstractPacketCodec.class);
            PacketHandlerWrapper handlerServer = new PacketHandlerWrapper(Side.SERVER, packetClass);
            channelServer.pipeline().addAfter(typeServer, generateName(channelServer.pipeline(), handlerServer), handlerServer);

            FMLEmbeddedChannel channelClient = channels.get(Side.CLIENT);
            String typeClient = channelClient.findChannelHandlerNameForType(AbstractPacketCodec.class);
            PacketHandlerWrapper handlerClient = new PacketHandlerWrapper(Side.CLIENT, packetClass);
            channelClient.pipeline().addAfter(typeClient, generateName(channelClient.pipeline(), handlerClient), handlerClient);
        }
        else
        {
            FMLEmbeddedChannel channel = channels.get(side);
            String type = channel.findChannelHandlerNameForType(AbstractPacketCodec.class);
            PacketHandlerWrapper handler = new PacketHandlerWrapper(side, packetClass);
            channel.pipeline().addAfter(type, generateName(channel.pipeline(), handler), handler);
        }
    }
    catch(Exception e)
    {
        iChunUtil.LOGGER.warn("Could not create packet for class " + packetClass.getName() + " for channel " + modId + ". Is there a default constructor in that class?");
        throw Throwables.propagate(e);
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号