java类net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler的实例源码

UdpChannelHandlerClient.java 文件源码 项目:Mods 阅读 25 收藏 0 点赞 0 评论 0
@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
    ByteBuf buffer = msg.content();

    int seq = buffer.readUnsignedShort();
    int msgid = buffer.readByte();

    IMessage message = TF2weapons.network.messages[msgid].newInstance();
    //buffer.discardReadBytes();
    message.fromBytes(buffer);
    IMessageHandler<IMessage, IMessage> handler = TF2weapons.network.handlerList.get(message.getClass());
    if(constr == null) {
        constr =MessageContext.class.getDeclaredConstructor(INetHandler.class, Side.class);
        constr.setAccessible(true);
    }
    MessageContext context = constr.newInstance(Minecraft.getMinecraft().player.connection, Side.CLIENT); 
    handler.onMessage(message, context);
    System.out.println("PacketFrom: "+msg.sender().getAddress()+ " "+msg.sender().getPort()+" ");

}
PacketDispatcher.java 文件源码 项目:Malgra 阅读 27 收藏 0 点赞 0 评论 0
/**
 * Registers an {@link AbstractMessage} to the appropriate side(s)
 */
private static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage(Class<T> clazz) {
    // We can tell by the message class which side to register it on by using #isAssignableFrom (google it)

    // Also, one can see the convenience of using a static counter 'packetId' to keep
    // track of the current index, rather than hard-coding them all, plus it's one less
    // parameter to pass.
    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    } else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    } else {
        // hopefully you didn't forget to extend the right class, or you will get registered on both sides
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
PacketDispatcher.java 文件源码 项目:EnderPay 阅读 23 收藏 0 点赞 0 评论 0
/**
 * Registers an {@link AbstractMessage} to the appropriate side(s)
 */
public static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage(Class<T> clazz) {
    // We can tell by the message class which side to register it on by using #isAssignableFrom (google it)

    // Also, one can see the convenience of using a static counter 'packetId' to keep
    // track of the current index, rather than hard-coding them all, plus it's one less
    // parameter to pass.
    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    } else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    } else {
        // hopefully you didn't forget to extend the right class, or you will get registered on both sides
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
PacketDispatcher.java 文件源码 项目:VendingBlock 阅读 25 收藏 0 点赞 0 评论 0
/**
 * Registers an {@link AbstractMessage} to the appropriate side(s)
 */
public static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage(Class<T> clazz) {
    // We can tell by the message class which side to register it on by using #isAssignableFrom (google it)

    // Also, one can see the convenience of using a static counter 'packetId' to keep
    // track of the current index, rather than hard-coding them all, plus it's one less
    // parameter to pass.
    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    } else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    } else {
        // hopefully you didn't forget to extend the right class, or you will get registered on both sides
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
PacketDispatcher.java 文件源码 项目:Skills 阅读 24 收藏 0 点赞 0 评论 0
/**
 * Registers an {@link AbstractMessage} to the appropriate side(s)
 */
private static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage(Class<T> clazz) {
    // We can tell by the message class which side to register it on by using #isAssignableFrom (google it)

    // Also, one can see the convenience of using a static counter 'packetId' to keep
    // track of the current index, rather than hard-coding them all, plus it's one less
    // parameter to pass.
    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    } else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    } else {
        // hopefully you didn't forget to extend the right class, or you will get registered on both sides
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
PacketHelper.java 文件源码 项目:AllPI 阅读 26 收藏 0 点赞 0 评论 0
public static <REQ extends IMessage, REPLY extends IMessage> void registerPacket(SimpleNetworkWrapper network, Class<REQ> requestMessageType, Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Side side) {
    String packetPackageName = requestMessageType.getPackage().getName();
    Iterator<String> iterator = packetByteDiscriminators.keySet().iterator();

    byte discriminator = -1;
    while(iterator.hasNext()) {
        String pack = iterator.next();

        if(pack.contains(packetPackageName)) {
            packetByteDiscriminators.get(packetPackageName);
        }
    }

    if(discriminator == -1) {
        packetByteDiscriminators.put(packetPackageName, (byte) 0);
    }

    network.registerMessage(messageHandler, requestMessageType, packetByteDiscriminators.get(packetPackageName), side);
}
APacket.java 文件源码 项目:minedriod 阅读 20 收藏 0 点赞 0 评论 0
public static HandlersInfo getHandlers(Class message) {
    Class[] handlerCandidates = message.getDeclaredClasses();
    Class clientHandler = null, serverHandler = null;

    for (int x = 0; x < handlerCandidates.length; x++) {
        if (IMessageHandler.class.isAssignableFrom(handlerCandidates[x])) {
            if (ClientHandler.class.isAssignableFrom(handlerCandidates[x])) {
                clientHandler = handlerCandidates[x];
            }

            if (ServerHandler.class.isAssignableFrom(handlerCandidates[x])) {
                serverHandler = handlerCandidates[x];
            }

            if (serverHandler != null && clientHandler != null) break;
        }
    }

    HandlersInfo info = new HandlersInfo();
    info.client = clientHandler;
    info.server = serverHandler;

    return info;
}
PacketDispatcher.java 文件源码 项目:Waypoints 阅读 28 收藏 0 点赞 0 评论 0
/**
 * Registers an {@link AbstractMessage} to the appropriate side(s)
 */
public static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage(Class<T> clazz) {
    // We can tell by the message class which side to register it on by using #isAssignableFrom (google it)

    // Also, one can see the convenience of using a static counter 'packetId' to keep
    // track of the current index, rather than hard-coding them all, plus it's one less
    // parameter to pass.
    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    } else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    } else {
        // hopefully you didn't forget to extend the right class, or you will get registered on both sides
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
NetworkHelper.java 文件源码 项目:customstuff4 阅读 25 收藏 0 点赞 0 评论 0
public static <T extends IMessage> boolean checkThreadAndEnqueue(final T message, final IMessageHandler<T, IMessage> handler, final MessageContext ctx, IThreadListener listener)
{
    if (!listener.isCallingFromMinecraftThread())
    {
        listener.addScheduledTask(() -> handler.onMessage(message, ctx));
        return true;
    }

    return false;
}
UdpChannelHandlerServer.java 文件源码 项目:Mods 阅读 23 收藏 0 点赞 0 评论 0
@Override
protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) throws Exception {
    ByteBuf buffer = msg.content();

    int plid = buffer.readShort();
    int seq = buffer.readUnsignedShort();
    int msgid = buffer.readByte();

    if(msgid == (byte)-128) {
        server.outboundTargets.put((short) plid, SocketUtils.socketAddress(msg.sender().getAddress().getHostAddress(),msg.sender().getPort()));
    }
    else {
        EntityPlayerMP player = server.playerList.get((short)plid);
        IMessage message = TF2weapons.network.messages[msgid].newInstance();
        //buffer.discardReadBytes();
        message.fromBytes(buffer);
        IMessageHandler<IMessage, IMessage> handler = TF2weapons.network.handlerList.get(message.getClass());
        if(constr == null) {
            constr =MessageContext.class.getDeclaredConstructor(INetHandler.class, Side.class);
            constr.setAccessible(true);
        }
        MessageContext context = constr.newInstance(player.connection, Side.SERVER); 
        handler.onMessage(message, context);
    }
    System.out.println("PacketFrom: "+msg.sender().getAddress()+ " "+msg.sender().getPort()+" ");

}
TF2NetworkWrapper.java 文件源码 项目:Mods 阅读 30 收藏 0 点赞 0 评论 0
public <REQ extends IMessage, REPLY extends IMessage> void registerMessage(Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestMessageType, int discriminator, Side side, boolean useUdp)
  {
      try {
    registerMessage(messageHandler.newInstance(), requestMessageType, discriminator, side, useUdp);
} catch (Exception e) {

}
  }
TF2NetworkWrapper.java 文件源码 项目:Mods 阅读 27 收藏 0 点赞 0 评论 0
public <REQ extends IMessage, REPLY extends IMessage> void registerMessage(IMessageHandler<? super REQ, ? extends REPLY> messageHandler, Class<REQ> requestMessageType, int discriminator, Side side, boolean useUdp)
{
    super.registerMessage(messageHandler, requestMessageType, discriminator, side);
    if(useUdp) {
        handlerList.put(requestMessageType, (IMessageHandler<IMessage, IMessage>) messageHandler);
        messages[discriminator] = requestMessageType;
        discriminators.put(requestMessageType, (byte)discriminator);

    }
}
ProxyModBase.java 文件源码 项目:CommonUtils 阅读 27 收藏 0 点赞 0 评论 0
public <REQ extends IMessage, REPLY extends IMessage> void addNetworkPacket(
        Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestMessageType,
        int discriminator, Side side) {
    if (netChannel == null)
        netChannel = NetworkRegistry.INSTANCE.newSimpleChannel(modId);
    netChannel.registerMessage(messageHandler, requestMessageType, discriminator, side);
}
PacketHandler.java 文件源码 项目:wolfarmor 阅读 22 收藏 0 点赞 0 评论 0
private static <T extends MessageBase<T> & IMessageHandler<T, IMessage>>void registerMessage(Class<T> clazz) {
    if(ClientMessageBase.class.isAssignableFrom(clazz)) {
        CHANNEL.registerMessage(clazz, clazz, ID++, Side.CLIENT);
        return;
    }
    if(ServerMessageBase.class.isAssignableFrom(clazz)) {
        CHANNEL.registerMessage(clazz, clazz, ID++, Side.SERVER);
        return;
    }
    CHANNEL.registerMessage(clazz, clazz, ID, Side.CLIENT);
    CHANNEL.registerMessage(clazz, clazz, ID++, Side.SERVER);
}
Geomastery.java 文件源码 项目:geomastery 阅读 24 收藏 0 点赞 0 评论 0
/** Helper for registering server -> client packets. */
private static <REQ extends IMessage, REPLY extends IMessage> void
        cPacket(Class<? extends IMessageHandler<REQ, REPLY>> handler,
        Class<REQ> packet) {

    NETWORK.registerMessage(handler, packet, packetID++, Side.CLIENT);
}
Geomastery.java 文件源码 项目:geomastery 阅读 30 收藏 0 点赞 0 评论 0
/** Helper for registering client -> server packets. */
private static <REQ extends IMessage, REPLY extends IMessage> void
        sPacket(Class<? extends IMessageHandler<REQ, REPLY>> handler,
        Class<REQ> packet) {

    NETWORK.registerMessage(handler, packet, packetID++, Side.SERVER);
}
PacketDispatcher.java 文件源码 项目:Bonfires 阅读 21 收藏 0 点赞 0 评论 0
private static <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage (Class<T> clazz) {
    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz))
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz))
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    else {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
PacketDispatcher.java 文件源码 项目:Kingdom-Keys-Re-Coded 阅读 32 收藏 0 点赞 0 评论 0
private static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage (Class<T> clazz) {
    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz))
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz))
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    else {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
MessageDispatcher.java 文件源码 项目:MagicaSolaris 阅读 22 收藏 0 点赞 0 评论 0
public static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage(Class<T> registee){
    if(AbstractMessage.AbstractClientMessage.class.isAssignableFrom(registee)){
        MessageDispatcher.INSTANCE.registerMessage(registee, registee, packetid++, Side.CLIENT);
    }else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(registee)){
        MessageDispatcher.INSTANCE.registerMessage(registee,registee,packetid++,Side.SERVER);
    }else{
        MessageDispatcher.INSTANCE.registerMessage(registee,registee,packetid++,Side.CLIENT);
        MessageDispatcher.INSTANCE.registerMessage(registee,registee,packetid++,Side.SERVER);

    }
}
PacketDispatcher.java 文件源码 项目:AbyssalCraft 阅读 25 收藏 0 点赞 0 评论 0
/**
 * Registers an {@link AbstractMessage} to the appropriate side(s)
 */
private static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage(Class<T> clazz) {
    // We can tell by the message class which side to register it on by using #isAssignableFrom (google it)

    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz))
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz))
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    else {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
PacketDispatcher.java 文件源码 项目:ZeldaSwordSkills 阅读 33 收藏 0 点赞 0 评论 0
/**
 * Registers an {@link AbstractMessage} to the appropriate side(s)
 */
private static final <T extends AbstractMessage<T> & IMessageHandler<T, IMessage>> void registerMessage(Class<T> clazz) {
    if (AbstractMessage.AbstractClientMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.CLIENT);
    } else if (AbstractMessage.AbstractServerMessage.class.isAssignableFrom(clazz)) {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    } else {
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId, Side.CLIENT);
        PacketDispatcher.dispatcher.registerMessage(clazz, clazz, packetId++, Side.SERVER);
    }
}
RezolvePacketHandler.java 文件源码 项目:rezolve 阅读 21 收藏 0 点赞 0 评论 0
public static <REQ extends IMessage, REPLY extends IMessage> 
void registerMessage(Class<? extends IMessageHandler<REQ, REPLY>> handler, Class<REQ> message, Side side) {
    RezolvePacketHandler.INSTANCE.registerMessage(handler, message, nextPacketID++, side);
}
NetworkLoader.java 文件源码 项目:MineCamera 阅读 20 收藏 0 点赞 0 评论 0
private static <REQ extends IMessage, REPLY extends IMessage> void registerMessage(
        Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestMessageType, Side side) {
    instance.registerMessage(messageHandler, requestMessageType, nextID++, side);
}
PacketHandler.java 文件源码 项目:Solar 阅读 24 收藏 0 点赞 0 评论 0
private static <H extends IMessageHandler<M, IMessage>, M extends IMessage> void register(Class<H> handler, Class<M> message, Side side) {
    NETWORK.registerMessage(handler, message, id++, side);
}
Dispatcher.java 文件源码 项目:metamorph 阅读 34 收藏 0 点赞 0 评论 0
private static <REQ extends IMessage, REPLY extends IMessage> void register(Class<REQ> message, Class<? extends IMessageHandler<REQ, REPLY>> handler, Side side)
{
    DISPATCHER.registerMessage(handler, message, PACKET_ID++, side);
}
ModMessages.java 文件源码 项目:AquaRegia 阅读 25 收藏 0 点赞 0 评论 0
private static <REQ extends IMessage, REPLY extends IMessage> void registerMessage(Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestMessageType, Side receivingSide) {
    AquaRegia.network.registerMessage(messageHandler, requestMessageType, messageID++, receivingSide);
}
Dispatcher.java 文件源码 项目:blockbuster 阅读 21 收藏 0 点赞 0 评论 0
/**
 * Register given message with given message handler on a given side
 */
public static <REQ extends IMessage, REPLY extends IMessage> void register(Class<REQ> message, Class<? extends IMessageHandler<REQ, REPLY>> handler, Side side)
{
    DISPATCHER.registerMessage(handler, message, PACKET_ID++, side);
}
NetworkHandler.java 文件源码 项目:Toms-Mod 阅读 32 收藏 0 点赞 0 评论 0
private static <REQ extends IMessage, REPLY extends IMessage> void register(Class<? extends IMessageHandler<REQ, REPLY>> messageHandler, Class<REQ> requestMessageType, Side side, int id) {
    CoreInit.log.info("Registering Message {} with id {}", messageHandler.getName(), id);
    INSTANCE.registerMessage(messageHandler, requestMessageType, id, side);
}
AlchemyNetworkHandler.java 文件源码 项目:Alchemy 阅读 23 收藏 0 点赞 0 评论 0
private static <T extends IMessage & IMessageHandler<T, IMessage>> void registerMessage(Class<T> clazz, Side side) {
    network_wrapper.registerMessage(clazz, clazz, next(), side);
    AlchemyInitHook.push_event(clazz);
}
AlchemyNetworkHandler.java 文件源码 项目:Alchemy 阅读 26 收藏 0 点赞 0 评论 0
public static <T extends IMessage & IMessageHandler<T, IMessage>> void registerMessage(INetworkMessage.Client<T> handle) {
    network_wrapper.registerMessage(Tool.instance(handle.getClientMessageClass()), handle.getClientMessageClass(), next(), Side.CLIENT);
}


问题


面经


文章

微信
公众号

扫码关注公众号