Started rewriting our packet handling code. Deleted PacketHandler in favor of using sided (Server-, Client-) packet handlers to make it easier to follow what's going on in our code. Added some event-based handling of updates which greatly simplified signaling that data needs to be sent, but it's not completely done yet.
62 lines
2.0 KiB
Java
62 lines
2.0 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.watcher.IOpaqueMessage;
|
|
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
|
|
{
|
|
IOpaqueMessage 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();
|
|
}
|
|
}
|
|
} |