Send Dimension Data earlier to ensure players in spatial cells can login without crashing.
This commit is contained in:
+19
-11
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user