package de.take_weiland.mods.commons.internal; import de.take_weiland.mods.commons.net.MCDataInput; import de.take_weiland.mods.commons.net.ModPacket; import de.take_weiland.mods.commons.net.Network; import de.take_weiland.mods.commons.util.JavaUtils; import net.minecraft.network.packet.NetHandler; import net.minecraft.network.packet.Packet250CustomPayload; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; /** * @author diesieben07 */ public class Packet250Fake extends Packet250CustomPayload { private final ModPacket modPacket; private final FMLPacketHandlerImpl.ModPacketInfo packetInfo; public Packet250Fake(ModPacket modPacket, FMLPacketHandlerImpl.ModPacketInfo packetInfo, String channel, byte[] bytes, int len) { this.modPacket = modPacket; this.packetInfo = packetInfo; this.channel = channel; this.data = bytes; this.length = len; } @Override public void writePacketData(DataOutput out) { try { writeString(channel, out); out.writeShort(length); out.write(data, 0, length); } catch (IOException e) { // stupid bug throw JavaUtils.throwUnchecked(e); } } @Override public void processPacket(NetHandler nh) { MCDataInput in = Network.newDataInput(data, 0, length); in.readVarInt(); // skip packet ID FMLPacketHandlerImpl.handlePacket(in, nh.getPlayer(), modPacket, packetInfo); } @Override public int getPacketSize() { return super.getPacketSize(); // TODO } @Override public void readPacketData(DataInput in) { throw new AssertionError(); } }