Send Dimension Data earlier to ensure players in spatial cells can login without crashing.

This commit is contained in:
AlgorithmX2
2014-08-29 21:39:36 -05:00
parent 05974153d7
commit 333a0a653d
2 changed files with 27 additions and 12 deletions
+19 -11
View File
@@ -1,5 +1,7 @@
package appeng.core; package appeng.core;
import io.netty.util.concurrent.GenericFutureListener;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
@@ -14,6 +16,7 @@ import java.util.WeakHashMap;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Configuration;
@@ -280,22 +283,27 @@ public class WorldSettings extends Configuration
return instance; return instance;
} }
public void sendToPlayer(EntityPlayerMP player) public void sendToPlayer(NetworkManager manager, EntityPlayerMP player)
{ {
for (int newDim : get( "DimensionManager", "StorageCells", new int[0] ).getIntList()) if ( manager != null )
{ {
try for (int newDim : get( "DimensionManager", "StorageCells", new int[0] ).getIntList())
{ {
NetworkHandler.instance.sendTo( new PacketNewStorageDimension( newDim ), player ); try
} {
catch (IOException e) manager.scheduleOutboundPacket( (new PacketNewStorageDimension( newDim )).getProxy(), new GenericFutureListener[0] );
{ }
AELog.error( e ); catch (IOException e)
{
AELog.error( e );
}
} }
} }
else
for (PlayerColor pc : TickHandler.instance.getPlayerColors().values()) {
NetworkHandler.instance.sendToAll( pc.getPacket() ); for (PlayerColor pc : TickHandler.instance.getPlayerColors().values())
NetworkHandler.instance.sendToAll( pc.getPacket() );
}
} }
public void init() public void init()
+8 -1
View File
@@ -9,6 +9,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
import cpw.mods.fml.common.network.FMLEventChannel; import cpw.mods.fml.common.network.FMLEventChannel;
import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent; import cpw.mods.fml.common.network.FMLNetworkEvent.ClientCustomPacketEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent.ServerConnectionFromClientEvent;
import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent; import cpw.mods.fml.common.network.FMLNetworkEvent.ServerCustomPacketEvent;
import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.network.NetworkRegistry;
@@ -56,11 +57,17 @@ public class NetworkHandler
} }
} }
@SubscribeEvent
public void newConection(ServerConnectionFromClientEvent ev)
{
WorldSettings.getInstance().sendToPlayer( ev.manager, null );
}
@SubscribeEvent @SubscribeEvent
public void newConection(PlayerLoggedInEvent loginEvent) public void newConection(PlayerLoggedInEvent loginEvent)
{ {
if ( loginEvent.player instanceof EntityPlayerMP ) if ( loginEvent.player instanceof EntityPlayerMP )
WorldSettings.getInstance().sendToPlayer( (EntityPlayerMP) loginEvent.player ); WorldSettings.getInstance().sendToPlayer( null, (EntityPlayerMP) loginEvent.player );
} }
@SubscribeEvent @SubscribeEvent