001 package net.minecraft.network.packet; 002 003 import java.io.DataInputStream; 004 import java.io.DataOutputStream; 005 import java.io.IOException; 006 007 public class Packet250CustomPayload extends Packet 008 { 009 /** Name of the 'channel' used to send data */ 010 public String channel; 011 012 /** Length of the data to be read */ 013 public int length; 014 015 /** Any data */ 016 public byte[] data; 017 018 public Packet250CustomPayload() {} 019 020 public Packet250CustomPayload(String par1Str, byte[] par2ArrayOfByte) 021 { 022 this.channel = par1Str; 023 this.data = par2ArrayOfByte; 024 025 if (par2ArrayOfByte != null) 026 { 027 this.length = par2ArrayOfByte.length; 028 029 if (this.length > 32767) 030 { 031 throw new IllegalArgumentException("Payload may not be larger than 32k"); 032 } 033 } 034 } 035 036 /** 037 * Abstract. Reads the raw packet data from the data stream. 038 */ 039 public void readPacketData(DataInputStream par1DataInputStream) throws IOException 040 { 041 this.channel = readString(par1DataInputStream, 20); 042 this.length = par1DataInputStream.readShort(); 043 044 if (this.length > 0 && this.length < 32767) 045 { 046 this.data = new byte[this.length]; 047 par1DataInputStream.readFully(this.data); 048 } 049 } 050 051 /** 052 * Abstract. Writes the raw packet data to the data stream. 053 */ 054 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException 055 { 056 writeString(this.channel, par1DataOutputStream); 057 par1DataOutputStream.writeShort((short)this.length); 058 059 if (this.data != null) 060 { 061 par1DataOutputStream.write(this.data); 062 } 063 } 064 065 /** 066 * Passes this Packet on to the NetHandler for processing. 067 */ 068 public void processPacket(NetHandler par1NetHandler) 069 { 070 par1NetHandler.handleCustomPayload(this); 071 } 072 073 /** 074 * Abstract. Return the size of the packet (not counting the header). 075 */ 076 public int getPacketSize() 077 { 078 return 2 + this.channel.length() * 2 + 2 + this.length; 079 } 080 }