307d2258d1
Continued building a system for transferring the complete internal states of our dimensions from the server to the client. However, Steven suggested that clients only need minimal data to operate properly, as opposed to the server. My motivation for this more complicated system was the concern that minimal information wouldn't be enough. I'm going to commit my progress, then tear it down and write a much simpler version.
62 lines
No EOL
2 KiB
Java
62 lines
No EOL
2 KiB
Java
package StevenDimDoors.mod_pocketDim;
|
|
|
|
import java.io.ByteArrayOutputStream;
|
|
import java.io.DataOutputStream;
|
|
import java.io.IOException;
|
|
|
|
import net.minecraft.network.INetworkManager;
|
|
import net.minecraft.network.NetLoginHandler;
|
|
import net.minecraft.network.packet.NetHandler;
|
|
import net.minecraft.network.packet.Packet1Login;
|
|
import net.minecraft.network.packet.Packet250CustomPayload;
|
|
import net.minecraft.server.MinecraftServer;
|
|
import StevenDimDoors.mod_pocketDim.core.PocketManager;
|
|
import StevenDimDoors.mod_pocketDim.messages.IDataMessage;
|
|
import cpw.mods.fml.common.network.IConnectionHandler;
|
|
import cpw.mods.fml.common.network.Player;
|
|
|
|
public class ConnectionHandler implements IConnectionHandler
|
|
{
|
|
@Override
|
|
public String connectionReceived(NetLoginHandler netHandler, INetworkManager manager)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void connectionOpened(NetHandler netClientHandler, String server, int port, INetworkManager manager) { }
|
|
|
|
@Override
|
|
public void connectionOpened(NetHandler netClientHandler,MinecraftServer server, INetworkManager manager) { }
|
|
|
|
@Override
|
|
public void connectionClosed(INetworkManager manager) { }
|
|
|
|
@Override
|
|
public void clientLoggedIn(NetHandler clientHandler, INetworkManager manager, Packet1Login login) { }
|
|
|
|
@Override
|
|
public void playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager)
|
|
{
|
|
//Send information about all the registered dimensions and links to the client
|
|
try
|
|
{
|
|
IDataMessage message = PocketManager.getState();
|
|
Packet250CustomPayload packet = new Packet250CustomPayload();
|
|
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
|
|
DataOutputStream writer = new DataOutputStream(buffer);
|
|
writer.writeByte(PacketConstants.CLIENT_JOIN_PACKET_ID);
|
|
message.writeToStream(writer);
|
|
writer.close();
|
|
packet.channel = PacketConstants.CHANNEL_NAME;
|
|
packet.data = buffer.toByteArray();
|
|
packet.length = packet.data.length;
|
|
manager.addToSendQueue(packet);
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
//This shouldn't happen...
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
} |