Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package me.totalfreedom.totalfreedommod.command;

import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Essentials Interface Command - Rainbowify your nickname.", usage = "/<command> <nick>")
public class Command_rainbownick extends FreedomCommand
{

@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length != 1)
{
return false;
}

final String nickPlain = ChatColor.stripColor(FUtil.colorize(args[0].trim()));

if (!nickPlain.matches("^[a-zA-Z_0-9" + ChatColor.COLOR_CHAR + "]+$"))
{
msg("That nickname contains invalid characters.");
return true;
}

if (nickPlain.length() < 4 || nickPlain.length() > 30)
{
msg("Your nickname must be between 4 and 30 characters long.");
return true;
}

for (Player player : Bukkit.getOnlinePlayers())
{
if (player == playerSender)
{
continue;
}
if (player.getName().equalsIgnoreCase(nickPlain) || ChatColor.stripColor(player.getDisplayName()).trim().equalsIgnoreCase(nickPlain))
{
msg("That nickname is already in use.");
return true;
}
}

final String newNick = FUtil.rainbowify(ChatColor.stripColor(FUtil.colorize(nickPlain)));

plugin.esb.setNickname(sender.getName(), newNick);

msg("Your nickname is now: " + newNick);

return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package me.totalfreedom.totalfreedommod.command;

import java.util.Iterator;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
@CommandParameters(description = "Gives you a rainbow tag", usage = "/<command> <tag>")
public class Command_rainbowtag extends FreedomCommand
{

@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length < 1)
{
return false;
}

final String tag = ChatColor.stripColor(FUtil.colorize(StringUtils.join(args, " ")));

if(tag.length() > 20)
{
msg("That tag is too long (Max is 20 characters).");
return true;
}

for (String word : Command_tag.FORBIDDEN_WORDS)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will need to be changed, assuming there is a merge of the 5.0.2 release as the forbidden tags system has changed. That's something I can change though once the PR goes in.

{
if (tag.contains(word))
{
msg("That tag contains a forbidden word.");
return true;
}
}

plugin.pl.getPlayer(playerSender).setTag(FUtil.rainbowify(tag));

msg("Set tag to " + tag);

return true;
}
}

37 changes: 29 additions & 8 deletions src/main/java/me/totalfreedom/totalfreedommod/util/FUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
Expand Down Expand Up @@ -40,18 +41,19 @@ public class FUtil
public static String DATE_STORAGE_FORMAT = "EEE, d MMM yyyy HH:mm:ss Z";
public static final Map<String, ChatColor> CHAT_COLOR_NAMES = new HashMap<>();
public static final List<ChatColor> CHAT_COLOR_POOL = Arrays.asList(
ChatColor.DARK_BLUE,
ChatColor.DARK_GREEN,
ChatColor.DARK_AQUA,
ChatColor.DARK_RED,
ChatColor.DARK_PURPLE,
ChatColor.RED,
ChatColor.GOLD,
ChatColor.BLUE,
ChatColor.YELLOW,
ChatColor.GREEN,
ChatColor.DARK_GREEN,
ChatColor.AQUA,
ChatColor.RED,
ChatColor.LIGHT_PURPLE,
ChatColor.YELLOW);
ChatColor.DARK_AQUA,
ChatColor.BLUE,
ChatColor.DARK_BLUE,
ChatColor.DARK_PURPLE,
ChatColor.LIGHT_PURPLE);
private static Iterator<ChatColor> CHAT_COLOR_ITERATOR;

static
{
Expand Down Expand Up @@ -368,6 +370,25 @@ public static ChatColor randomChatColor()
{
return CHAT_COLOR_POOL.get(RANDOM.nextInt(CHAT_COLOR_POOL.size()));
}

public static String rainbowify(String string)
{
CHAT_COLOR_ITERATOR = CHAT_COLOR_POOL.iterator();

final StringBuilder newString = new StringBuilder();
final char[] chars = string.toCharArray();

for (char c : chars)
{
if (!CHAT_COLOR_ITERATOR.hasNext())
{
CHAT_COLOR_ITERATOR = CHAT_COLOR_POOL.iterator(); //Restart from first colour if there are no more colours in iterator.
}
newString.append(CHAT_COLOR_ITERATOR.next()).append(c);
}

return newString.toString();
}

public static String colorize(String string)
{
Expand Down