Fixed remote and local connections work with mods now.

This commit is contained in:
Christian committed 2013-12-11 12:35:08 -05:00
1 parent 89e4e483c2
commit cd417c6786
4 files changed
+43 -14

No files matched your search

@@ -56,7 +56,25 @@ enum FMLHandshakeClientState implements IHandshakeState<FMLHandshakeClientState>
dispatcher.rejectHandshake(result);
return ERROR;
}
ctx.writeAndFlush(new FMLHandshakeMessage.ClientAck());
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck());
if (!ctx.channel().attr(NetworkDispatcher.IS_LOCAL).get())
{
return WAITINGSERVERCOMPLETE;
}
else
{
return COMPLETE;
}
}
},
WAITINGSERVERCOMPLETE
{
@Override
public FMLHandshakeClientState accept(ChannelHandlerContext ctx, FMLHandshakeMessage msg)
{
FMLHandshakeMessage.ModIdData modIds = (FMLHandshakeMessage.ModIdData)msg;
GameData.injectWorldIDMap(modIds.dataList());
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck());
return COMPLETE;
}
},
@@ -67,13 +85,16 @@ enum FMLHandshakeClientState implements IHandshakeState<FMLHandshakeClientState>
{
NetworkDispatcher dispatcher = ctx.channel().attr(NetworkDispatcher.FML_DISPATCHER).get();
dispatcher.continueToClientPlayState();
if (!ctx.channel().attr(NetworkDispatcher.IS_LOCAL).get())
{
FMLHandshakeMessage.ModIdData modIds = (FMLHandshakeMessage.ModIdData)msg;
GameData.injectWorldIDMap(modIds.dataList());
}
FMLLog.info("Client side modded connection established");
ctx.writeAndFlush(new FMLHandshakeMessage.ClientAck());
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck());
return DONE;
}
},
DONE
{
@Override
public FMLHandshakeClientState accept(ChannelHandlerContext ctx, FMLHandshakeMessage msg)
{
return this;
}
},
@@ -11,7 +11,7 @@ public class FMLHandshakeCodec extends FMLIndexedMessageToMessageCodec<FMLHandsh
addDiscriminator((byte)1, FMLHandshakeMessage.ClientHello.class);
addDiscriminator((byte)2, FMLHandshakeMessage.ModList.class);
addDiscriminator((byte)3, FMLHandshakeMessage.ModIdData.class);
addDiscriminator((byte)-1, FMLHandshakeMessage.ClientAck.class);
addDiscriminator((byte)-1, FMLHandshakeMessage.HandshakeAck.class);
}
@Override
public void encodeInto(ChannelHandlerContext ctx, FMLHandshakeMessage msg, ByteBuf target) throws Exception
@@ -151,7 +151,7 @@ public abstract class FMLHandshakeMessage {
return modIds;
}
}
public static class ClientAck extends FMLHandshakeMessage {
public static class HandshakeAck extends FMLHandshakeMessage {
}
public void fromBytes(ByteBuf buffer)
@@ -44,10 +44,6 @@ enum FMLHandshakeServerState implements IHandshakeState<FMLHandshakeServerState>
return ERROR;
}
ctx.writeAndFlush(new FMLHandshakeMessage.ModList(Loader.instance().getActiveModList()));
if (ctx.channel().attr(NetworkDispatcher.IS_LOCAL).get())
{
return COMPLETE;
}
return WAITINGCACK;
}
},
@@ -56,7 +52,11 @@ enum FMLHandshakeServerState implements IHandshakeState<FMLHandshakeServerState>
@Override
public FMLHandshakeServerState accept(ChannelHandlerContext ctx, FMLHandshakeMessage msg)
{
ctx.writeAndFlush(new FMLHandshakeMessage.ModIdData(GameData.buildItemDataList()));
if (!ctx.channel().attr(NetworkDispatcher.IS_LOCAL).get())
{
ctx.writeAndFlush(new FMLHandshakeMessage.ModIdData(GameData.buildItemDataList()));
}
ctx.writeAndFlush(new FMLHandshakeMessage.HandshakeAck());
return COMPLETE;
}
},
@@ -68,6 +68,14 @@ enum FMLHandshakeServerState implements IHandshakeState<FMLHandshakeServerState>
NetworkDispatcher dispatcher = ctx.channel().attr(NetworkDispatcher.FML_DISPATCHER).get();
FMLLog.info("Server side modded connection established");
dispatcher.continueToServerPlayState();
return DONE;
}
},
DONE
{
@Override
public FMLHandshakeServerState accept(ChannelHandlerContext ctx, FMLHandshakeMessage msg)
{
return this;
}
},