Fixed More Bugs
Fixed the issue with integrated servers causing circular updates between the combined server and client. We now check on the client side whether the connection we're receiving data from is a memory connection (which is presumably only used by integrated servers). If so, the client ignores any incoming packets. We don't just disable update events altogether because LAN games will require updating remote clients. Also fixed a bug in PocketManager.unload() - we weren't setting isLoaded to false after unloading everything and unregisterPockets() had to be called before setting dimensionData to null.
This commit is contained in:
parent
1a50aa2290
commit
549ee54852
2 changed files with 12 additions and 8 deletions
|
@ -391,17 +391,16 @@ public class PocketManager
|
|||
|
||||
public static void unload()
|
||||
{
|
||||
if (!isLoaded)
|
||||
{
|
||||
throw new IllegalStateException("Pocket dimensions have already been unloaded!");
|
||||
}
|
||||
|
||||
save();
|
||||
dimensionData = null;
|
||||
unregisterPockets();
|
||||
dimensionData = null;
|
||||
isLoaded = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* This isn't needed right now and it's causing me problems due to the iterator's generic type -_-
|
||||
public static Iterable<NewDimData> getDimensions()
|
||||
{
|
||||
return dimensionData.values();
|
||||
}*/
|
||||
|
||||
public static DimLink getLink(int x, int y, int z, World world)
|
||||
{
|
||||
|
|
|
@ -38,6 +38,11 @@ public class ClientPacketHandler implements IPacketHandler, IUpdateSource
|
|||
if (!packet.channel.equals(PacketConstants.CHANNEL_NAME))
|
||||
return;
|
||||
|
||||
// If this is a memory connection, then our client is running an integrated server.
|
||||
// We can tell by checking if packet size is 0.
|
||||
if (manager.packetSize() == 0)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
DataInputStream input = new DataInputStream(new ByteArrayInputStream(packet.data));
|
||||
|
|
Loading…
Reference in a new issue