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 Packet3Chat extends Packet 008 { 009 /** Maximum number of characters allowed in chat string in each packet. */ 010 public static int maxChatLength = 119; 011 012 /** The message being sent. */ 013 public String message; 014 private boolean isServer; 015 016 public Packet3Chat() 017 { 018 this.isServer = true; 019 } 020 021 public Packet3Chat(String par1Str) 022 { 023 this(par1Str, true); 024 } 025 026 public Packet3Chat(String par1Str, boolean par2) 027 { 028 this.isServer = true; 029 030 if (par1Str.length() > maxChatLength) 031 { 032 par1Str = par1Str.substring(0, maxChatLength); 033 } 034 035 this.message = par1Str; 036 this.isServer = par2; 037 } 038 039 /** 040 * Abstract. Reads the raw packet data from the data stream. 041 */ 042 public void readPacketData(DataInputStream par1DataInputStream) throws IOException 043 { 044 this.message = readString(par1DataInputStream, maxChatLength); 045 } 046 047 /** 048 * Abstract. Writes the raw packet data to the data stream. 049 */ 050 public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException 051 { 052 writeString(this.message, par1DataOutputStream); 053 } 054 055 /** 056 * Passes this Packet on to the NetHandler for processing. 057 */ 058 public void processPacket(NetHandler par1NetHandler) 059 { 060 par1NetHandler.handleChat(this); 061 } 062 063 /** 064 * Abstract. Return the size of the packet (not counting the header). 065 */ 066 public int getPacketSize() 067 { 068 return 2 + this.message.length() * 2; 069 } 070 071 /** 072 * Get whether this is a server 073 */ 074 public boolean getIsServer() 075 { 076 return this.isServer; 077 } 078 079 /** 080 * If this returns true, the packet may be processed on any thread; otherwise it is queued for the main thread to 081 * handle. 082 */ 083 public boolean canProcessAsync() 084 { 085 return !this.message.startsWith("/"); 086 } 087 }