package joshie.progression.network.core; import com.google.common.io.CharStreams; import io.netty.buffer.ByteBuf; import joshie.progression.helpers.MCClientHelper; import net.minecraft.client.network.NetHandlerPlayClient; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.NetHandlerPlayServer; import net.minecraftforge.fml.common.network.simpleimpl.IMessage; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStreamReader; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; public abstract class PenguinPacket implements IMessage { public abstract void handlePacket(EntityPlayer player); @Override public void toBytes(ByteBuf to) {} @Override public void fromBytes(ByteBuf from) {} public void handleQueuedClient(NetHandlerPlayClient handler) { handlePacket(MCClientHelper.getPlayer()); } public void handleQueuedServer(NetHandlerPlayServer serverHandler) { handlePacket(serverHandler.playerEntity); } public static void writeGzipString(ByteBuf buf, String string) { try { ByteArrayOutputStream baos = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(baos); gzip.write(string.getBytes("UTF-8")); gzip.close(); byte[] data = baos.toByteArray(); buf.writeInt(data.length); buf.writeBytes(data); } catch (Exception e) {} } public static String readGzipString(ByteBuf buf) { try { int length = buf.readInt(); byte[] data = buf.readBytes(length).array(); GZIPInputStream gzip = new GZIPInputStream(new ByteArrayInputStream(data)); BufferedReader bf = new BufferedReader(new InputStreamReader(gzip, "UTF-8")); return CharStreams.toString(bf); } catch (Exception e) { return ""; } } }