Misc fixes for WordWrap

This commit is contained in:
cerevisiae 2010-11-29 19:13:16 -06:00
parent b92bd3b65d
commit 11dc691220
3 changed files with 28 additions and 83 deletions

View File

@ -34,9 +34,8 @@ public class vminecraftChat {
public static String[] wordWrap(String msg){ public static String[] wordWrap(String msg){
//Split each word apart //Split each word apart
String[] split = msg.split(" "); String[] split = msg.split(" ");
//Create the output array
int length = (int)msgLength(msg) / 316;
//Create an arraylist for the output
ArrayList<String> out = new ArrayList<String>(); ArrayList<String> out = new ArrayList<String>();
//While i is less than the length of the array of words //While i is less than the length of the array of words
@ -54,78 +53,20 @@ public class vminecraftChat {
i++; i++;
} }
String[] temp = new String[i - j];
//Copy the words in the selection into a new array //Copy the words in the selection into a new array
String[] temp = new String[i - j];
System.arraycopy(split, j, temp, 0, i - j); System.arraycopy(split, j, temp, 0, i - j);
//Merge them and add them to the output array //Merge them and add them to the output array
out.add( etc.combineSplit(0, temp, " ") ); out.add( etc.combineSplit(0, temp, " ") );
} }
//Convert to an array and return
String[] tempout = new String[out.size()]; String[] tempout = new String[out.size()];
out.toArray(tempout); out.toArray(tempout);
return tempout; return tempout;
} }
//=====================================================================
//Function: wordWrap
//Input: Player player: To get the player name
// 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(Player player, String msg){
//Split each word apart
String[] array = msg.split(" ");
//Create the output array
String[] out = new String[0];
//While i is less than the length of the array of words
int i = 0;
while(i < array.length){
int len = 0;
if(out.length == 0)
len = msgLength("<" + player.getName() + "> ");
int j = i;
//Loop through the words finding their length and increasing
//j, the end point for the sub string
while(len <= 316 && j < array.length)
{
len += msgLength(array[j]) + 4;
if( len <= 316)
j++;
}
String[] temp = new String[j - i];
//If it's not the end yet
if(j < array.length)
{
//Copy the words in the selection into a new array
System.arraycopy(array, i, temp, 0, j);
//Merge them and add them to the output array
String[] tempOut = new String[out.length + 1];
System.arraycopy(out, 0, tempOut, 0, out.length);
tempOut[tempOut.length - 1] = etc.combineSplit(0, temp, " ");
out = tempOut;
}
else
{
//Merge the rest and add them to the output array
String[] tempOut = new String[out.length + 1];
System.arraycopy(out, 0, tempOut, 0, out.length);
tempOut[tempOut.length - 1] = etc.combineSplit(i, array, " ");
out = tempOut;
}
//Make the old front equal to the old end
i = j;
}
return out;
}
private static int msgLength(String str){ private static int msgLength(String str){
int length = 0; int length = 0;
for(int x = 0; x<str.length(); x++) for(int x = 0; x<str.length(); x++)
@ -290,7 +231,7 @@ public class vminecraftChat {
String adminchat = Colors.DarkPurple + "{" + nameColor(player) String adminchat = Colors.DarkPurple + "{" + nameColor(player)
+ Colors.DarkPurple +"}" + Colors.White + " "; + Colors.DarkPurple +"}" + Colors.White + " ";
String[] msg = wordWrap(player, message.substring(1, message.length())); String[] msg = wordWrap(adminchat + message.substring(1, message.length()));
//Get the player from the playerlist to send the message to. //Get the player from the playerlist to send the message to.
for (Player p: etc.getServer().getPlayerList()) { for (Player p: etc.getServer().getPlayerList()) {
@ -337,7 +278,7 @@ public class vminecraftChat {
log.log(Level.INFO, "<"+player.getName()+"> "+message); log.log(Level.INFO, "<"+player.getName()+"> "+message);
//Get the multi line array //Get the multi line array
String[] msg = wordWrap(player, message); String[] msg = wordWrap(playerName + message);
//Output the first line //Output the first line
gmsg( playerName + Colors.LightGreen + msg[0]); gmsg( playerName + Colors.LightGreen + msg[0]);
@ -367,7 +308,7 @@ public class vminecraftChat {
log.log(Level.INFO, "<"+player.getName()+"> "+message); log.log(Level.INFO, "<"+player.getName()+"> "+message);
//Get the multi line array //Get the multi line array
String[] msg = wordWrap(player, message); String[] msg = wordWrap(playerName + message);
//Output the first line //Output the first line
gmsg( playerName + Colors.Red + msg[0]); gmsg( playerName + Colors.Red + msg[0]);
@ -399,7 +340,7 @@ public class vminecraftChat {
log.log(Level.INFO, "<"+player.getName()+"> "+message); log.log(Level.INFO, "<"+player.getName()+"> "+message);
//Get the multi line array //Get the multi line array
String[] msg = wordWrap(player, message); String[] msg = wordWrap(playerName + message);
//Apply colors to the lines //Apply colors to the lines
applyColors(msg); applyColors(msg);

View File

@ -179,10 +179,11 @@ public class vminecraftCommands{
public static boolean rules(Player player, String[] args) public static boolean rules(Player player, String[] args)
{ {
//If the rules exist //If the rules exist
if(vminecraftSettings.getInstance().cmdRules()) { if(vminecraftSettings.getInstance().cmdRules()
&& vminecraftSettings.getInstance().getRules().length != 0) {
//Display them //Display them
for (String str : vminecraftSettings.getInstance().getRules()) { for (String str : vminecraftSettings.getInstance().getRules()) {
if(str != null) if(str.isEmpty())
player.sendMessage(Colors.Blue+str); player.sendMessage(Colors.Blue+str);
} }
return true; return true;
@ -202,19 +203,20 @@ public class vminecraftCommands{
{ {
//If the command is enabled //If the command is enabled
if(vminecraftSettings.getInstance().cmdFabulous()) { if(vminecraftSettings.getInstance().cmdFabulous()) {
String playerName = "<" + vminecraftChat.nameColor(player)
+ Colors.White + "> ";
//Make sure a message has been specified //Make sure a message has been specified
if (args.length < 1) {return false;} if (args.length < 1) {return false;}
String str = ""; String str = " ";
//Merge the message again //Merge the message again
str = etc.combineSplit(0, args, " "); str = etc.combineSplit(0, args, " ");
//Output for server //Output for server
log.log(Level.INFO, player.getName()+" fabulously said \""+ str+"\""); log.log(Level.INFO, player.getName()+" fabulously said \""+ str+"\"");
//Prepend the player name //Prepend the player name
String[] message = vminecraftChat.wordWrap(player, str); String[] message = vminecraftChat.wordWrap(playerName + str);
//Output the first line //Output the first line
vminecraftChat.gmsg( "<" + vminecraftChat.nameColor(player) + Colors.White + "> " vminecraftChat.gmsg( playerName + vminecraftChat.rainbow(message[0]));
+ vminecraftChat.rainbow(message[0]));
//Get the rest of the lines and display them. //Get the rest of the lines and display them.
String[] tempOut = new String[message.length - 1]; String[] tempOut = new String[message.length - 1];

View File

@ -42,7 +42,7 @@ public class vminecraftSettings {
private PropertiesFile properties; private PropertiesFile properties;
String file = "vminecraft.properties"; String file = "vminecraft.properties";
public String rules[] = null; public String rules[] = new String[0];
//===================================================================== //=====================================================================
//Function: loadSettings //Function: loadSettings
@ -78,7 +78,9 @@ public class vminecraftSettings {
writer.write("FFF=true\r\n"); writer.write("FFF=true\r\n");
writer.write("adminchat=true\r\n"); writer.write("adminchat=true\r\n");
writer.write("cmdEzModo=true\r\n"); writer.write("cmdEzModo=true\r\n");
writer.write("#Adding player names to this list will have them start off in ezmodo\r\n");
writer.write("ezModo=\r\n"); writer.write("ezModo=\r\n");
writer.write("#The health ezmodo people will have while in ezmodo. Don't set to 0\r\n");
writer.write("ezHealth=30\r\n"); writer.write("ezHealth=30\r\n");
writer.write("stopFire=false"); writer.write("stopFire=false");
writer.write("stopTnt=false"); writer.write("stopTnt=false");
@ -100,7 +102,7 @@ public class vminecraftSettings {
try { try {
properties.load(); properties.load();
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); log.log(Level.SEVERE, "Exception while loading vminecraft.properties", e);
} }
} }