package net.diamonddominion.esaych.global;
import net.diamonddominion.esaych.CustomPlugin;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class ChatPrefix {
private CustomPlugin plugin;
private ChatSQL sql;
public ChatPrefix(CustomPlugin plugin) {
this.plugin = plugin;
}
@SuppressWarnings("static-access")
public void enable() {
sql = plugin.chat.sql;
log("Enabled");
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (!(sender instanceof Player)) {
if (args.length > 1){
Player otherplayer = Bukkit.getPlayer(args[0]);
if (otherplayer != null){
args[0] = otherplayer.getName();
String prefix = args[1];
for (int x = 2; x < args.length; x++){
prefix = prefix + " " + args[x];
}
sql.setPrefix(args[0], prefix);
log(otherplayer.getName() + "'s name has been formatted to: " + prefix);
} else {
log(args[0] + " not found");
}
} else {
log("Try: /fullprefix [Player] [Name Format]");
}
return true;
}
Player player = (Player)sender;
if (player.hasPermission("mchat.prefix") || player.isOp()) { // VIP User
if (args.length != 0) { // Must have arguments
if (player.hasPermission("mchat.prefix.admin") || player.isOp()) {
Player otherplayer = Bukkit.getPlayer(args[0]);
if (otherplayer != null && args.length != 1){ //Administrator changes someone's name
args[0] = otherplayer.getName();
if (otherplayer.hasPermission("mchat.prefix")) {
String prefix = args[1];
for (int x = 2; x < args.length; x++){
prefix = prefix + " " + args[x];
}
if (cutLength(prefix) <= 10) {
sql.setPrefix(args[0], removeFormattingCodes("&e<" + prefix + "&e> ") + "%name%");
player.sendMessage(ChatColor.GREEN + args[0] + "'s name has been formatted to:");
player.sendMessage(prefixWithFormatting("&e<" + prefix + "&e> ") + args[0]);
otherplayer.sendMessage(ChatColor.GREEN + "Your name has been formatted to:");
otherplayer.sendMessage(prefixWithFormatting("&e<" + prefix + "&e> ") + args[0] + " by " + player.getName());
log(player.getName() + " changed " + args[0] + "'s name to be formatted: " + removeFormattingCodes("&e<" + prefix + "&e> ") + otherplayer.getPlayerListName());
//[Administrator] changed [Player]'s name to be formatted <[Prefix]&6> [Player]
} else {
player.sendMessage(ChatColor.DARK_RED + "Error: " + ChatColor.RED + "Prefix too long.");
}
} else {
player.sendMessage(ChatColor.DARK_RED + "Error: " + ChatColor.RED + args[0] + " lacks permission for a prefix.");
}
} else { //Administrator changes his own name
String prefix = args[0];
for (int x = 1; x < args.length; x++){
prefix = prefix + " " + args[x];
}
if (cutLength(prefix) <= 10) {
sql.setPrefix(player.getName(), removeFormattingCodes("&e<" + prefix + "&e> ") + "%name%");
player.sendMessage(ChatColor.GREEN + "Your name has been formatted to:");
player.sendMessage(prefixWithFormatting("&e<" + prefix + "&e> ") + player.getPlayerListName());
log(player.getName() + " changed their name to be formatted: " + removeFormattingCodes("&e<" + prefix + "&e> ") + player.getPlayerListName());
//[AdministratorUsername] changed his name to be formatted: <[Prefix]&c> [AdministratorUsername]
} else {
player.sendMessage(ChatColor.DARK_RED + "Error: " + ChatColor.RED + "Prefix too long.");
}
}
} else {
//Regular VIP user changing his name:
String prefix = args[0];
for (int x = 1; x < args.length; x++){
prefix = prefix + " " + args[x];
}
if (cutLength(prefix) <= 10) {
sql.setPrefix(player.getName(), removeFormattingCodes("&e<" + prefix + "&e> ") + "%name%");
player.sendMessage(ChatColor.GREEN + "Your name has been formatted to:");
player.sendMessage(prefixWithFormatting("&e<" + prefix + "&e> ") + player.getPlayerListName());
log(player.getName() + " changed their name to be formatted: " + removeFormattingCodes("&e<" + prefix + "&e> ") + player.getPlayerListName());
//[Player] changed his name to be formatted: <[Prefix]&6> [Player]
} else {
player.sendMessage(ChatColor.DARK_RED + "Error: " + ChatColor.RED + "Prefix too long.");
}
}
} else { //No arguments???? Help Message
player.sendMessage(ChatColor.YELLOW + "To change your perfix:");
player.sendMessage(ChatColor.AQUA + "/prefix [" + ChatColor.GREEN + "Prefix" + ChatColor.AQUA+ "]");
player.sendMessage(ChatColor.YELLOW + "To delete your perfix:");
player.sendMessage(ChatColor.AQUA + "/delprefix");
if (player.hasPermission("mchat.prefix.admin") || player.isOp()) { //Extra Administrator Help
player.sendMessage(ChatColor.ITALIC + "-=-=-=-=-=-= Admin Commands =-=-=-=-=-=-");
player.sendMessage(ChatColor.GOLD + "To change another player's prefix:");
player.sendMessage(ChatColor.AQUA + "/prefix [" + ChatColor.GREEN + "Player" + ChatColor.AQUA + "] [" + ChatColor.GREEN + "Prefix" + ChatColor.AQUA+ "]");
player.sendMessage(ChatColor.GOLD + "To delete another player's perfix:");
player.sendMessage(ChatColor.AQUA + "/delprefix [" + ChatColor.GREEN + "Player" + ChatColor.AQUA+ "]");
player.sendMessage(ChatColor.GOLD + "Reformat your name:");
player.sendMessage(ChatColor.AQUA + "/fullprefix [" + ChatColor.GREEN + "Name Format" + ChatColor.AQUA + "]");
player.sendMessage(ChatColor.GOLD + "Reformat another player's name:");
player.sendMessage(ChatColor.AQUA + "/fullprefix [" + ChatColor.GREEN + "Player" + ChatColor.AQUA + "] [" + ChatColor.GREEN + "Name Format" + ChatColor.AQUA + "]");
player.sendMessage(ChatColor.GOLD + "[Player] must be the full, case sensitive player's name");
}
}
} else {
player.sendMessage(ChatColor.RED + "You can't change you Prefix! You need to be a Elite status or higher!");
}
return true;
}
public boolean delPrefix(CommandSender sender, Command cmd, String label, String[] args) {
if (sender instanceof Player) {
Player player = (Player)sender;
if (player.hasPermission("mchat.prefix") || player.isOp()) { // VIP User
if (player.hasPermission("mchat.prefix.admin") || player.isOp()) { // Administrator
if (args.length != 0) {
Player otherplayer = Bukkit.getPlayer(args[0]);
if (otherplayer != null) {
args[0] = otherplayer.getName();
}
if (sql.getPrefix(args[0]) == null) {
player.sendMessage(ChatColor.GREEN + args[0] + " never had a prefix");
} else {
sql.setPrefix(args[0], null);
player.sendMessage(ChatColor.GREEN + args[0] + "'s prefix has been removed.");
if (otherplayer != null){
otherplayer.sendMessage(ChatColor.GREEN + "Your prefix has been removed by " + player.getName());
}
log(player.getName() + " removed " + args[0] + "'s prefix");
}
} else { // Administrator resetting his own prefix
sql.setPrefix(player.getName(), null);
player.sendMessage(ChatColor.GREEN + "Your prefix has been removed.");
log(player.getName() + " removed their prefix");
}
} else { // Regular VIP
sql.setPrefix(player.getName(), null);
player.sendMessage(ChatColor.GREEN + "Your prefix has been removed.");
}
} else {
player.sendMessage(ChatColor.RED + "You can't change you Prefix! You need to be a Sponsor, Premium or Boss!");
}
} else { //Console is executing
if (args.length != 0) {
sql.setPrefix(args[0], null);
log(ChatColor.GREEN + args[0] + "'s prefix has been removed.");
} else { // Administrator resetting his own prefix
log("Please provide a username to reset");
}
}
return true;
}
public boolean fullPrefix(CommandSender sender, Command cmd, String label, String[] args) {
if (sender instanceof Player) {
Player player = (Player)sender;
if (player.hasPermission("mchat.prefix.admin") || player.isOp()){
if (args.length != 0){
Player otherplayer = Bukkit.getPlayer(args[0]);
if (otherplayer != null && args.length != 1){
args[0] = otherplayer.getName();
String prefix = args[1];
for (int x = 2; x < args.length; x++){
prefix = prefix + " " + args[x];
}
sql.setPrefix(args[0], prefix);
player.sendMessage(ChatColor.GREEN + otherplayer.getName() + "'s name has been formatted to: " + prefix);
log(args[0] + "'s name has been formatted to: " + prefix);
} else { //Changing his own name
String prefix = args[0];
for (int x = 1; x < args.length; x++){
prefix = prefix + " " + args[x];
}
sql.setPrefix(player.getName(), prefix);
player.sendMessage(ChatColor.GREEN + "Your name has been formatted to: " + prefix);
log(player.getName() + "'s name has been formatted to: " + prefix);
}
} else {
player.sendMessage(ChatColor.GOLD + "Reformat your name:");
player.sendMessage(ChatColor.AQUA + "/fullprefix [" + ChatColor.GREEN + "Name Format" + ChatColor.AQUA + "]");
player.sendMessage(ChatColor.GOLD + "Reformat another player's name:");
player.sendMessage(ChatColor.AQUA + "/fullprefix [" + ChatColor.GREEN + "Player" + ChatColor.AQUA + "] [" + ChatColor.GREEN + "Name Format" + ChatColor.AQUA + "]");
}
} else {
if (player.hasPermission("mchat.prefix")) {
player.sendMessage(ChatColor.RED + "You can't change you Name! Only your prefix with /prefix");
} else {
player.sendMessage(ChatColor.RED + "You must be an administrator to use this command.");
}
}
}
return true;
}
public String prefixWithFormatting(String input){
return input.replaceAll("&a", ChatColor.GREEN + "&a").replaceAll("&b", ChatColor.AQUA + "&b").replaceAll("&c", ChatColor.RED + "&c").replaceAll("&d", ChatColor.LIGHT_PURPLE + "&d").replaceAll("&e", ChatColor.YELLOW + "&e").replaceAll("&f", ChatColor.WHITE + "&f")
.replaceAll("&0", ChatColor.BLACK + "&0").replaceAll("&1", ChatColor.DARK_BLUE + "&1").replaceAll("&2", ChatColor.DARK_GREEN + "&2").replaceAll("&3", ChatColor.DARK_AQUA + "&3").replaceAll("&4", ChatColor.DARK_RED + "&4").replaceAll("&5", ChatColor.DARK_PURPLE + "&5")
.replaceAll("&6", ChatColor.GOLD + "&6").replaceAll("&7", ChatColor.GRAY + "&7").replaceAll("&8", ChatColor.DARK_GRAY + "&8").replaceAll("&9", ChatColor.BLUE + "&9")
.replaceAll("&k", "").replaceAll("&l", "").replaceAll("&m", "").replaceAll("&n", "").replaceAll("&o", "").replaceAll("&r", "");
}
public String removeFormattingCodes(String input){
return input.replaceAll("&k", "").replaceAll("&l", "").replaceAll("&m", "").replaceAll("&n", "").replaceAll("&o", "").replaceAll("&r", "");
}
public int cutLength(String prefix){
return removeColorCodes(prefix).length();
}
public String removeColorCodes(String input){
return input.replaceAll("&a", "").replaceAll("&b", "").replaceAll("&c", "").replaceAll("&d", "").replaceAll("&e", "").replaceAll("&f", "")
.replaceAll("&0", "").replaceAll("&1", "").replaceAll("&2", "").replaceAll("&3", "").replaceAll("&4", "").replaceAll("&5", "")
.replaceAll("&6", "").replaceAll("&7", "").replaceAll("&8", "").replaceAll("&9", "")
.replaceAll("&k", "").replaceAll("&l", "").replaceAll("&m", "").replaceAll("&n", "").replaceAll("&o", "").replaceAll("&r", "");
}
public void log(String info) {
plugin.getLogger().info("<ChatPrefix> " + info);
}
}