diff --git a/core/WorldSettings.java b/core/WorldSettings.java index 17cb1d44c..c0bfc2c54 100644 --- a/core/WorldSettings.java +++ b/core/WorldSettings.java @@ -1,5 +1,7 @@ package appeng.core; +import io.netty.util.concurrent.GenericFutureListener; + import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; @@ -14,6 +16,7 @@ import java.util.WeakHashMap; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.CompressedStreamTools; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.Configuration; @@ -280,22 +283,27 @@ public class WorldSettings extends Configuration 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 ); - } - catch (IOException e) - { - AELog.error( e ); + try + { + manager.scheduleOutboundPacket( (new PacketNewStorageDimension( newDim )).getProxy(), new GenericFutureListener[0] ); + } + catch (IOException e) + { + AELog.error( e ); + } } } - - for (PlayerColor pc : TickHandler.instance.getPlayerColors().values()) - NetworkHandler.instance.sendToAll( pc.getPacket() ); + else + { + for (PlayerColor pc : TickHandler.instance.getPlayerColors().values()) + NetworkHandler.instance.sendToAll( pc.getPacket() ); + } } public void init() diff --git a/core/sync/network/NetworkHandler.java b/core/sync/network/NetworkHandler.java index c4be1b6e7..bff21b317 100644 --- a/core/sync/network/NetworkHandler.java +++ b/core/sync/network/NetworkHandler.java @@ -9,6 +9,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent; import cpw.mods.fml.common.network.FMLEventChannel; 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.NetworkRegistry; @@ -56,11 +57,17 @@ public class NetworkHandler } } + @SubscribeEvent + public void newConection(ServerConnectionFromClientEvent ev) + { + WorldSettings.getInstance().sendToPlayer( ev.manager, null ); + } + @SubscribeEvent public void newConection(PlayerLoggedInEvent loginEvent) { if ( loginEvent.player instanceof EntityPlayerMP ) - WorldSettings.getInstance().sendToPlayer( (EntityPlayerMP) loginEvent.player ); + WorldSettings.getInstance().sendToPlayer( null, (EntityPlayerMP) loginEvent.player ); } @SubscribeEvent