public void run() {
			while (r != null && !this.isInterrupted()) {
				try {
					StringBuilder sb = new StringBuilder();
					
					String pac = r.readUTF();
					if (pac != null && pac.startsWith("pac")) {
						sb.append(pac);
						if (!pac.endsWith("ket")) {
							String stack;
							do {
								stack = r.readUTF();
								sb.append(stack);
							} while (!stack.endsWith("ket"));
						}
						String data = sb.toString();
						String json = data.substring(3, data.length() -3);
						Packet packet = gson.fromJson(json, Packet.registry.getPacketClass(json));
						
						OpenCraft.log.debug(data);
						pr.emit(packet);
					}
					
				} catch (IOException e) {
					OpenCraft.log.debug("Client connection closed");
					this.pr.emit(new PacketPartServer("Connection closed"));
					this.interrupt();
				}
			}
		}