| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690 | 
							- import java.util.ArrayList;
 
- import java.util.logging.Level;
 
- import java.util.logging.Logger;
 
- //=====================================================================
 
- //Class:	vMinecraftChat
 
- //Use:		Encapsulates all chat commands added by this mod
 
- //Author:	nossr50, TrapAlice, cerevisiae
 
- //=====================================================================
 
- public class vChat {
 
-     protected static final Logger log = Logger.getLogger("Minecraft");
 
-     protected static final int lineLength = 312;
 
- 	//The array of colors to use
 
- 	protected static final String[] rainbow = new String[] {
 
- 			Colors.Red,
 
- 			Colors.Rose,
 
- 			Colors.Gold,
 
- 			Colors.Yellow,
 
- 			Colors.LightGreen,
 
- 			Colors.Green,
 
- 			Colors.LightBlue,
 
- 			Colors.Blue, 
 
- 			Colors.Navy, 
 
- 			Colors.DarkPurple, 
 
- 			Colors.Purple,
 
- 			Colors.LightPurple};
 
-         protected static final String[] xmas = new String[] {
 
-             Colors.Red,
 
-             Colors.Red,
 
-             Colors.White,
 
-             Colors.White,
 
-             Colors.Green,
 
-             Colors.Green,
 
-         };
 
- 	//=====================================================================
 
- 	//Function:	gmsg
 
- 	//Input:	Player sender: The player sending the message
 
- 	//			String msg: The message to be broadcast to all players
 
- 	//Output:	None 
 
- 	//Use:		Outputs a message to everybody
 
- 	//=====================================================================
 
-     public static void gmsg(Player sender, String msg){
 
-     	if(sender != null && sender.isMuted())
 
-     		sender.sendMessage(Colors.Red + "You have been muted.");
 
-     	
 
-         for (Player receiver : etc.getServer().getPlayerList()) {
 
-         	
 
-             if (receiver == null) return;
 
-             
 
-         	if(vUsers.getProfile(receiver) == null) return;
 
-         	
 
-         	//Check if the person has the sender ignored
 
-         	if(sender != null)
 
-         		if(vUsers.getProfile(receiver).isIgnored(sender))
 
-         			return;
 
-         	
 
- 	    	String[] message = applyColors(wordWrap(msg));
 
- 	    	for(String out : message)
 
- 	    		receiver.sendMessage(out);
 
-         }
 
-     }
 
- 	//=====================================================================
 
- 	//Function:	gmsg
 
- 	//Input:	String msg: The message to be broadcast to all players
 
- 	//Output:	None 
 
- 	//Use:		Outputs a message to everybody
 
- 	//=====================================================================
 
-     public static void gmsg(String msg){gmsg(null, msg);}
 
- 	//=====================================================================
 
- 	//Function:	sendMessage
 
- 	//Input:	Player sender: The player sending the message
 
-     //			Player receiver: The player receiving the message
 
-     //			String msg: The message to be broadcast to all players
 
- 	//Output:	None 
 
- 	//Use:		Outputs a message to everybody
 
- 	//=====================================================================
 
-     public static void sendMessage(Player sender, Player receiver, String msg){
 
-     	if(sender != null && sender.isMuted())
 
-     		sender.sendMessage(Colors.Red + "You have been muted.");
 
-     	
 
-     	//Check if the receiver has the sender ignored
 
-     	if(vUsers.getProfile(receiver) == null)
 
-     		return;
 
-     	if(sender != null)
 
-     		if(vUsers.getProfile(receiver).isIgnored(sender))
 
-     		{
 
-         		sendMessage(sender, sender, Colors.Rose + receiver.getName()
 
-         				+ " has you on their ignore list.");
 
-     			return;
 
-     		}
 
-     	String[] message = applyColors(wordWrap(msg));
 
-     	for(String out : message)
 
-     		receiver.sendMessage(out);
 
- 	    //Tell them if they are
 
-     }
 
- 	//=====================================================================
 
- 	//Function:	sendMessage
 
- 	//Input:	Player receiver: The player receiving the message
 
-     //			String msg: The message to be broadcast to all players
 
- 	//Output:	None 
 
- 	//Use:		Outputs a message to everybody
 
- 	//=====================================================================
 
-     public static void sendMessage(Player receiver, String msg)
 
-     {
 
-     	sendMessage(null, receiver, msg);
 
-     }
 
- 	//=====================================================================
 
- 	//Function:	wordWrap
 
- 	//Input:	String msg: The message to be wrapped
 
- 	//Output:	String[]: The array of substrings 
 
- 	//Use:		Cuts the message apart into whole words short enough to fit
 
-     //			on one line
 
- 	//=====================================================================
 
-     public static String[] wordWrap(String msg){
 
-     	//Split each word apart
 
-     	ArrayList<String> split = new ArrayList<String>();
 
-     	for(String in : msg.split(" "))
 
- 			split.add(in);
 
-     	
 
-     	//Create an arraylist for the output
 
-     	ArrayList<String> out = new ArrayList<String>();
 
-     	//While i is less than the length of the array of words
 
-     	while(!split.isEmpty()){
 
-     		int len = 0;
 
-         	
 
-         	//Create an arraylist to hold individual words
 
-         	ArrayList<String> words = new ArrayList<String>();
 
-     		//Loop through the words finding their length and increasing
 
-     		//j, the end point for the sub string
 
-     		while(!split.isEmpty() && split.get(0) != null && len <= lineLength)
 
-     		{
 
-     			int wordLength = msgLength(split.get(0)) + 4;
 
-     			
 
-     			//If a word is too long for a line
 
-     			if(wordLength > lineLength)
 
-     			{
 
-         			String[] tempArray = wordCut(len, split.remove(0));
 
-     				words.add(tempArray[0]);
 
-         			split.add(tempArray[1]);
 
-     			}
 
-     			//If the word is not too long to fit
 
-     			len += wordLength;
 
-     			if( len < lineLength)
 
-     				words.add(split.remove(0));
 
-     		}
 
-     		//Merge them and add them to the output array.
 
-     		out.add( etc.combineSplit(0,
 
-     				words.toArray(new String[words.size()]), " ") + " " );
 
-     	}
 
-     	//Convert to an array and return
 
-     	return out.toArray(new String[out.size()]);
 
-     }
 
-     
 
- 	//=====================================================================
 
- 	//Function:	msgLength
 
- 	//Input:	String str: The string to find the length of
 
- 	//Output:	int: The length on the screen of a string
 
- 	//Use:		Finds the length on the screen of a string. Ignores colors.
 
- 	//=====================================================================
 
-     public static int msgLength(String str){
 
- 		int length = 0;
 
- 		//Loop through all the characters, skipping any color characters
 
- 		//and their following color codes
 
- 		for(int x = 0; x<str.length(); x++)
 
- 		{
 
- 			if((x+1 <= str.length()) && (str.charAt(x) == '^' || str.charAt(x) == Colors.White.charAt(0)))
 
- 			{
 
-                                 if(colorChange(str.charAt(x + 1)) != null)
 
- 				{
 
- 					x++;
 
-                                         continue;
 
- 				}
 
- 			}
 
- 			int len = charLength(str.charAt(x));
 
- 			length += len;
 
- 		}
 
- 		return length;
 
-     }
 
-     
 
- 	//=====================================================================
 
- 	//Function:	wordCut
 
- 	//Input:	String str: The string to find the length of
 
- 	//Output:	String[]: The cut up word
 
- 	//Use:		Cuts apart a word that is too long to fit on one line
 
- 	//=====================================================================
 
-     private static String[] wordCut(int lengthBefore, String str){
 
- 		int length = lengthBefore;
 
- 		//Loop through all the characters, skipping any color characters
 
- 		//and their following color codes
 
- 		String[] output = new String[2];
 
- 		int x = 0;
 
- 		while(length < lineLength && x < str.length())
 
- 		{
 
- 			int len = charLength(str.charAt(x));
 
- 			if( len > 0)
 
- 				length += len;
 
- 			else
 
- 				x++;
 
- 			x++;
 
- 		}
 
- 		if(x > str.length())
 
- 			x = str.length();
 
- 		//Add the substring to the output after cutting it
 
- 		output[0] = str.substring(0, x);
 
- 		//Add the last of the string to the output.
 
- 		output[1] = str.substring(x);
 
- 		return output;
 
-     }
 
-     
 
- 	//=====================================================================
 
- 	//Function:	charLength
 
- 	//Input:	char x: The character to find the length of.
 
- 	//Output:	int: The length of the character
 
- 	//Use:		Finds the visual length of the character on the screen.
 
- 	//=====================================================================
 
-     private static int charLength(char x)
 
-     {
 
-     	if("i.:,;|!".indexOf(x) != -1)
 
- 			return 2;
 
- 		else if("l'".indexOf(x) != -1)
 
- 			return 3;
 
- 		else if("tI[]".indexOf(x) != -1)
 
- 			return 4;
 
- 		else if("fk{}<>\"*()".indexOf(x) != -1)
 
- 			return 5;
 
- 		else if("abcdeghjmnopqrsuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ1234567890\\/#?$%-=_+&^".indexOf(x) != -1)
 
- 			return 6;
 
- 		else if("@~".indexOf(x) != -1)
 
- 			return 7;
 
- 		else if(x==' ')
 
- 			return 4;
 
- 		else
 
- 			return -1;
 
-     }
 
- 	//=====================================================================
 
- 	//Function:	rainbow
 
- 	//Input:	String msg: The string to colorify
 
- 	//Output:	String: The rainbowed result
 
- 	//Use:		Rainbowifies a string;
 
- 	//=====================================================================
 
-     public static String rainbow(String msg){
 
-     	String temp = "";
 
- 		int counter=0;
 
- 		//Loop through the message applying the colors
 
- 		for(int x=0; x<msg.length(); x++)
 
- 		{
 
- 			temp += rainbow[counter]+msg.charAt(x);
 
- 			
 
- 			if(msg.charAt(x)!=' ') counter++;
 
- 			if(counter==rainbow.length) counter = 0;
 
- 		}
 
- 		return temp;
 
-     }
 
-     //=====================================================================
 
- 	//Function:	xmas
 
- 	//Input:	String msg: The string to colorify
 
- 	//Output:	String: The xmas colored result
 
- 	//Use:		Makes a string more festive
 
- 	//=====================================================================
 
-     public static String xmas(String msg){
 
-     	String temp = "";
 
- 		int counter=0;
 
- 		//Loop through the message applying the colors
 
- 		for(int x=0; x<msg.length(); x++)
 
- 		{
 
- 			temp += xmas[counter]+msg.charAt(x);
 
- 			
 
- 			if(msg.charAt(x)!=' ') counter++;
 
- 			if(counter==xmas.length) counter = 0;
 
- 		}
 
- 		return temp;
 
-     }
 
- 	//=====================================================================
 
- 	//Function:	getName
 
- 	//Input:	Player player: The player to get name as color
 
- 	//Output:	String: The name colored 
 
- 	//Use:		Returns the colored name;
 
- 	//=====================================================================
 
-     public static String getName(Player player){
 
-     	
 
-     	//Add the nickname or the name if there is none
 
-     	String output = vUsers.getProfile(player).getNick();
 
-     	
 
-     	if(output.isEmpty())
 
-     		output = player.getName();
 
-     	
 
-     	//Add the color if there is one
 
-     	if(player.getColor() != null && !"".equals(player.getColor()))
 
-     		output = player.getColor().substring(0,2) + output;
 
-     	
 
-     	//Add the tag if there is one
 
-     	output = vUsers.getProfile(player).getTag() + output;
 
-     	
 
-     	//Add the suffix if there is one
 
-     	output += vUsers.getProfile(player).getSuffix();
 
-     	
 
-     	output = Colors.White + output;
 
-     	
 
-     	/*if(playerPrefix != null && !playerPrefix.isEmpty())
 
-     		output = applyColors(playerPrefix.substring(1)) + output;*/
 
-     	
 
-     	//Return the name
 
-         return output;
 
-     }
 
-     
 
- 	//=====================================================================
 
- 	//Function:	colorChange
 
- 	//Input:	char colour: The color code to find the color for
 
- 	//Output:	String: The color that the code identified 
 
- 	//Use:		Finds a color giving a color code
 
- 	//=====================================================================
 
- 	public static String colorChange(char colour)
 
- 	{
 
- 		String color;
 
- 		switch(colour)
 
- 		{
 
- 			case '0':
 
- 				color = Colors.Black;
 
- 				break;
 
- 			case '1':
 
- 				color = Colors.Navy;
 
- 				break;
 
- 			case '2':
 
- 				color = Colors.Green;
 
- 				break;
 
- 			case '3':
 
- 				color = Colors.Blue;
 
- 				break;
 
- 			case '4':
 
- 				color = Colors.Red;
 
- 				break;
 
- 			case '5':
 
- 				color = Colors.Purple;
 
- 				break;
 
- 			case '6':
 
- 				color = Colors.Gold;
 
- 				break;
 
- 			case '7':
 
- 				color = Colors.LightGray;
 
- 				break;
 
- 			case '8':
 
- 				color = Colors.Gray;
 
- 				break;
 
- 			case '9':
 
- 				color = Colors.DarkPurple;
 
- 				break;
 
- 			case 'a':
 
- 				color = Colors.LightGreen;
 
- 				break;
 
- 			case 'b':
 
- 				color = Colors.LightBlue;
 
- 				break;
 
- 			case 'c':
 
- 				color = Colors.Rose;
 
- 				break;
 
- 			case 'd':
 
- 				color = Colors.LightPurple;
 
- 				break;
 
- 			case 'e':
 
- 				color = Colors.Yellow;
 
- 				break;
 
- 			case 'f':
 
- 				color = Colors.White;
 
- 				break;
 
- 			case 'A':
 
- 				color = Colors.LightGreen;
 
- 				break;
 
- 			case 'B':
 
- 				color = Colors.LightBlue;
 
- 				break;
 
- 			case 'C':
 
- 				color = Colors.Rose;
 
- 				break;
 
- 			case 'D':
 
- 				color = Colors.LightPurple;
 
- 				break;
 
- 			case 'E':
 
- 				color = Colors.Yellow;
 
- 				break;
 
- 			case 'F':
 
- 				color = Colors.White;
 
- 				break;
 
- 			case 'R':
 
- 				color = "^r";
 
- 				break;
 
- 			case 'r':
 
- 				color = "^r";
 
- 				break;
 
-                         case 'x':
 
-                             color = "^x";
 
-                             break;
 
-                         case 'X':
 
-                             color = "^x";
 
-                             break;
 
-                         default:
 
-                             color = null;
 
-                             break;
 
- 		}
 
-                 return color;
 
- 	}
 
- 	  
 
- 	//=====================================================================
 
- 	//Function:	adminChat
 
- 	//Input:	Player player: The player talking
 
-     //			String message: The message to apply the effect to
 
- 	//Output:	boolean: If this feature is enabled
 
- 	//Use:		Sends messages only to admins
 
- 	//=====================================================================
 
- 	public static boolean adminChat(Player player, String message){
 
- 		
 
- 		//Check if the player can use this feature
 
- 		if(player.isAdmin() || player.canUseCommand("/adminchat"))
 
- 		{
 
- 			//Special formatting for adminchat {Username}
 
- 	        String adminchat = Colors.DarkPurple + "{" + getName(player)
 
- 	        +  Colors.DarkPurple +"} ";
 
- 	        
 
- 	        //Cut off the @ prefix
 
- 	        if(message.startsWith("@"))
 
- 	        	message = message.substring(1, message.length());
 
- 	        
 
- 	        //Get the player from the playerlist to send the message to.
 
- 			for (Player p: etc.getServer().getPlayerList()) {
 
- 				
 
- 				//If p is not null
 
- 				if (p != null) {
 
- 					
 
- 					//And if p is an admin or has access to adminchat send message
 
- 					if (p.isAdmin() || (p.canUseCommand("/adminchat"))) {
 
- 						sendMessage(player, p, adminchat + message);
 
- 					}
 
- 				}
 
- 			}
 
- 		    //So you can read adminchat from the server console
 
- 			log.log(Level.INFO, "@" + "<" + player.getName() + "> " + message); 
 
- 			return true;
 
- 		}
 
- 		return false;
 
- 	}
 
-         public static boolean partyChat(Player player, String message){
 
-             if(vConfig.getInstance().partyChat()){
 
-              //Cut off the ! prefix
 
- 	        if(message.startsWith("!"))
 
- 	        	message = message.substring(1, message.length());
 
-             if(vUsers.getProfile(player).inParty()){
 
-                 String partychat = Colors.Green + "(" + getName(player) + Colors.Green + ") ";
 
-                 for (Player p: etc.getServer().getPlayerList()){
 
-                     if (p != null){
 
-                         if (vUsers.getProfile(p).inParty() && (vUsers.getProfile(p).getParty().equals(vUsers.getProfile(player).getParty()))){
 
-                             sendMessage(player, p, partychat + Colors.Green + message);
 
-                         }
 
-                     }
 
-                 }
 
-                 return true;
 
-             }
 
-             }
 
-             return false;
 
-             
 
-         }
 
- 	//=====================================================================
 
- 	//Function:	quote
 
- 	//Input:	Player player: The player talking
 
-     //			String message: The message to apply the effect to
 
- 	//Output:	boolean: If this feature is enabled
 
- 	//Use:		Displays a message as a quote
 
- 	//=====================================================================
 
- 	public static boolean quote(Player player, String message)
 
- 	{
 
- 		//Format the name
 
- 		String playerName = vmc.getInstance().getGroupPrefix(player) + "<" + getName(player)
 
- 				+ vmc.getInstance().getGroupPrefix(player) + "> ";
 
- 		if(vConfig.getInstance().greentext()) {
 
- 			//Log the chat
 
- 			log.log(Level.INFO, "<"+player.getName()+"> " + message);
 
- 			//Output the message
 
- 			gmsg(player, playerName + Colors.LightGreen + message);
 
- 			return true;
 
- 		}
 
- 		return false;
 
- 	}
 
- 	//=====================================================================
 
- 	//Function:	rage
 
- 	//Input:	Player player: The player talking
 
-     //			String message: The message to apply the effect to
 
- 	//Output:	boolean: If this feature is enabled
 
- 	//Use:		Displays a message in red
 
- 	//=====================================================================
 
- 	public static boolean rage(Player player, String message)
 
- 	{
 
- 		//Format the name
 
- 		String playerName = vmc.getInstance().getGroupPrefix(player) + "<"
 
- 				+ getName(player) + vmc.getInstance().getGroupPrefix(player) +"> ";
 
- 		if (vConfig.getInstance().FFF()) {
 
- 			log.log(Level.INFO, "<"+player.getName()+"> "+message);
 
- 			
 
- 			//Output the message
 
- 			gmsg(player, playerName + Colors.Red +  message);
 
- 			return true;
 
- 		}
 
- 		return false;
 
- 	}
 
-     
 
-     //=====================================================================
 
- 	//Function:	quakeColors
 
- 	//Input:	Player player: The player talking
 
-     //			String message: The message to apply the effect to
 
- 	//Output:	boolean: If this feature is enabled
 
- 	//Use:		Displays a message in red
 
- 	//=====================================================================
 
- 	public static boolean quakeColors(Player player, String message)
 
- 	{
 
- 		//Format the name
 
- 		String playerName = vmc.getInstance().getGroupPrefix(player) + "<"
 
- 				+ getName(player) + vmc.getInstance().getGroupPrefix(player) +"> ";
 
- 		if(vConfig.getInstance().quakeColors()) {
 
- 			String color = vUsers.getProfile(player).getColor();
 
- 			//Log the chat
 
- 			log.log(Level.INFO, "<"+player.getName()+"> " + message);
 
- 			
 
- 			//Output the message
 
- 			gmsg(player, playerName + color + message);
 
- 			//Loop through the string finding the color codes and inserting them
 
- 			return true;
 
- 		}
 
- 		return false;
 
- 	}
 
-     
 
- 	//=====================================================================
 
- 	//Function:	emote
 
- 	//Input:	Player player: The player talking
 
-     //          	String message: The message to apply the effect to
 
- 	//Output:	boolean: If this feature is enabled
 
- 	//Use:		/me but with our custom colors applied
 
- 	//=====================================================================
 
-     public static boolean emote(Player player, String message)
 
-     {
 
- 		gmsg(player, "* " + getName(player) + " " + Colors.White + message);
 
-         return true;
 
-     }
 
-     
 
-     //=====================================================================
 
- 	//Function:	applyColors
 
- 	//Input:	String[] message: The lines to be colored
 
- 	//Output:	String[]: The lines, but colorful
 
- 	//Use:		Colors each line
 
- 	//=====================================================================
 
- 	public static String[] applyColors(String[] message)
 
- 	{
 
- 		if(message != null && message[0] != null && !message[0].isEmpty()){
 
- 			//The color to start the line with
 
- 			String recentColor = Colors.White;
 
- 			
 
- 			//Go through each line
 
- 			int counter = 0;
 
- 			int i = 0;
 
- 			boolean taste = false;
 
-                         boolean xmasparty = false;
 
- 			
 
- 			for(String msg: message)
 
- 			{	
 
- 				//Start the line with the most recent color
 
- 				String temp = "";
 
- 				if(!recentColor.equals("^r") && recentColor != null)
 
- 					temp += recentColor;
 
- 				
 
- 				//Loop through looking for a color code
 
- 				for(int x = 0; x< msg.length(); x++)
 
- 				{
 
- 					//If the char is a ^ or �
 
- 					if(taste || msg.charAt(x) == '^'
 
- 							|| msg.charAt(x) == Colors.Red.charAt(0))
 
- 					{
 
- 						if(x != msg.length() - 1)
 
- 						{
 
- 							//If the following character is a color code
 
- 							if(vChat.colorChange(msg.charAt(x+1)) != null)
 
- 							{
 
- 								//Set the most recent color to the new color
 
- 								recentColor = vChat.colorChange(msg.charAt(x+1));
 
- 								
 
- 								//If the color specified is rainbow
 
- 								if(taste || recentColor.equals("^r"))
 
- 								{
 
- 									//Skip the quake code for rainbow
 
- 									if(recentColor.equals("^r"))
 
- 									{
 
- 										x += 2;
 
- 									}
 
- 									
 
- 									//Taste keeps it going with rainbow if there
 
- 									//are more lines
 
- 									taste = true;
 
- 									//Loop through the message applying the colors
 
- 									while(x < msg.length() && msg.charAt(x) != '^'
 
- 										&& msg.charAt(x) != Colors.Red.charAt(0))
 
- 									{
 
- 										temp += rainbow[i] + msg.charAt(x);
 
- 										
 
- 										if(msg.charAt(x) != ' ') i++;
 
- 										if(i == rainbow.length) i = 0;
 
- 										x++;
 
- 									}
 
- 									
 
- 									//If it reached another color instead of the end
 
- 									if(x < msg.length() && msg.charAt(x) == '^'
 
- 											|| x < msg.length()
 
- 											&&  msg.charAt(x) == Colors.Red.charAt(0) )
 
- 									{
 
- 										taste = false;
 
- 										i = 0;
 
- 										x--;
 
- 									}
 
- 								}
 
-                                                               if(xmasparty || recentColor.equals("^x"))
 
- 								{
 
- 									//Skip the quake code for xmas
 
- 									if(recentColor.equals("^x"))
 
- 									{
 
- 										x += 2;
 
- 									}
 
- 									
 
- 									//Taste keeps it going with xmas if there
 
- 									//are more lines
 
- 									xmasparty = true;
 
- 									//Loop through the message applying the colors
 
- 									while(x < msg.length() && msg.charAt(x) != '^'
 
- 										&& msg.charAt(x) != Colors.Red.charAt(0))
 
- 									{
 
- 										temp += xmas[i] + msg.charAt(x);
 
- 										
 
- 										if(msg.charAt(x) != ' ') i++;
 
- 										if(i == xmas.length) i = 0;
 
- 										x++;
 
- 									}
 
- 									
 
- 									//If it reached another color instead of the end
 
- 									if(x < msg.length() && msg.charAt(x) == '^'
 
- 											|| x < msg.length()
 
- 											&&  msg.charAt(x) == Colors.Red.charAt(0) )
 
- 									{
 
- 										xmasparty = false;
 
- 										i = 0;
 
- 										x--;
 
- 									}
 
- 								}
 
- 								else
 
-                                                                 
 
- 								{
 
- 									//Add the color
 
- 									temp += recentColor;
 
- 									//Skip these chars
 
- 									x++;
 
- 								}
 
- 								
 
- 							//Otherwise ignore it.
 
- 							} else {
 
- 								temp += msg.charAt(x);
 
- 							}
 
- 						//Insert the character
 
- 						} else {
 
- 							temp += msg.charAt(x);
 
- 						}
 
- 					} else {
 
- 						temp += msg.charAt(x);
 
- 					}
 
- 				}
 
- 				//Replace the message with the colorful message
 
- 				message[counter] = temp;
 
- 				counter++;
 
- 			}
 
- 		}
 
- 		return message;
 
- 	}
 
- }
 
 
  |