[Bleeding] Revamped rank system yet again

Refractoring
Bug fixes
Mass format
This commit is contained in:
JeromSar
2016-02-29 21:48:17 +01:00
parent a0058869c9
commit 4586b7519f
33 changed files with 219 additions and 301 deletions

View File

@ -1,97 +0,0 @@
package me.totalfreedom.totalfreedommod.rank;
import org.bukkit.ChatColor;
public enum ConsoleRank implements Rank
{
TELNET_CONSOLE(PlayerRank.TELNET_ADMIN),
SENIOR_CONSOLE(PlayerRank.SENIOR_ADMIN);
//
private final PlayerRank appliedRank;
//
private ConsoleRank(PlayerRank appliedRank)
{
this.appliedRank = appliedRank;
}
@Override
public String getName()
{
return "Console";
}
@Override
public ChatColor getColor()
{
return ChatColor.DARK_PURPLE;
}
@Override
public String getColorString()
{
return ChatColor.DARK_PURPLE.toString();
}
@Override
public String getColoredName()
{
return getColor() + getName();
}
@Override
public String getTag()
{
return "[Console]";
}
@Override
public String getColoredTag()
{
return getColorString() + getTag();
}
@Override
public String getColoredLoginMessage()
{
return "the " + getColorString() + " Console";
}
@Override
public int getLevel()
{
return ordinal();
}
@Override
public boolean isAtLeast(Rank rank)
{
return getLevel() >= rank.getLevel();
}
public static boolean hasConsole(PlayerRank playerRank)
{
for (ConsoleRank consoleRank : values())
{
if (consoleRank.appliedRank == playerRank)
{
return true;
}
}
return false;
}
public static ConsoleRank forRank(PlayerRank playerRank)
{
for (ConsoleRank consoleRank : values())
{
if (consoleRank.appliedRank == playerRank)
{
return consoleRank;
}
}
return TELNET_CONSOLE;
}
}

View File

@ -5,7 +5,7 @@ public class CustomLoginRank extends RankProxy
private String loginMessage;
public CustomLoginRank(PlayerRank rank, String loginMessage)
public CustomLoginRank(Rank rank, String loginMessage)
{
super(rank);
}

View File

@ -6,30 +6,35 @@ import org.bukkit.ChatColor;
public enum PlayerRank implements Rank
{
// Order is important here
IMPOSTOR(false, "an", "Imp", ChatColor.YELLOW, ChatColor.UNDERLINE),
NON_OP(false, "a", "", ChatColor.GREEN),
OP(false, "an", "OP", ChatColor.RED),
SUPER_ADMIN(true, "a", "SA", ChatColor.GOLD),
TELNET_ADMIN(true, "a", "StA", ChatColor.DARK_GREEN),
SENIOR_ADMIN(true, "a", "SrA", ChatColor.LIGHT_PURPLE);
IMPOSTOR(Type.PLAYER, "an", "Imp", ChatColor.YELLOW),
NON_OP(Type.PLAYER, "a", "", ChatColor.GREEN),
OP(Type.PLAYER, "an", "OP", ChatColor.RED),
SUPER_ADMIN(Type.ADMIN, "a", "SA", ChatColor.GOLD),
TELNET_ADMIN(Type.ADMIN, "a", "StA", ChatColor.DARK_GREEN),
SENIOR_ADMIN(Type.ADMIN, "a", "SrA", ChatColor.LIGHT_PURPLE),
TELNET_CONSOLE(),
SENIOR_CONSOLE();
//
@Getter
private final Type type;
@Getter
private final String name;
private final String determiner;
@Getter
private final String tag;
@Getter
private final ChatColor color;
@Getter
private final String colorString;
@Getter
private final boolean admin;
private PlayerRank(boolean admin, String determiner, String tag, ChatColor... colors)
private PlayerRank()
{
this.admin = admin;
this("Console", Type.ADMIN_CONSOLE, "the", "Console", ChatColor.DARK_PURPLE);
}
private PlayerRank(Type type, String determiner, String tag, ChatColor color)
{
this.type = type;
// Name
final String[] nameParts = name().toLowerCase().split("_");
String tempName = "";
for (String part : nameParts)
@ -41,19 +46,23 @@ public enum PlayerRank implements Rank
this.determiner = determiner;
this.tag = "[" + tag + "]";
this.color = colors[0];
String tColor = "";
for (ChatColor lColor : colors)
{
tColor += lColor.toString();
}
colorString = tColor;
// Colors
this.color = color;
}
private PlayerRank(String name, Type type, String determiner, String tag, ChatColor color)
{
this.type = type;
this.name = name;
this.determiner = determiner;
this.tag = "[" + tag + "]";
this.color = color;
}
@Override
public String getColoredName()
{
return getColorString() + getName();
return getColor() + getName();
}
@Override
@ -68,9 +77,9 @@ public enum PlayerRank implements Rank
return determiner + " " + getColoredName();
}
public boolean hasConsole()
public boolean isConsole()
{
return ConsoleRank.hasConsole(this);
return getType() == Type.ADMIN_CONSOLE;
}
@Override
@ -85,7 +94,47 @@ public enum PlayerRank implements Rank
return getLevel() >= rank.getLevel();
}
public static PlayerRank forString(String string)
public boolean isAdmin()
{
return getType() == Type.ADMIN || getType() == Type.ADMIN_CONSOLE;
}
public boolean hasConsole()
{
return getConsoleVariant() != null;
}
public PlayerRank getConsoleVariant()
{
switch (this)
{
case TELNET_ADMIN:
case TELNET_CONSOLE:
return TELNET_CONSOLE;
case SENIOR_ADMIN:
case SENIOR_CONSOLE:
return SENIOR_CONSOLE;
default:
return null;
}
}
public PlayerRank getPlayerVariant()
{
switch (this)
{
case TELNET_ADMIN:
case TELNET_CONSOLE:
return TELNET_ADMIN;
case SENIOR_ADMIN:
case SENIOR_CONSOLE:
return SENIOR_ADMIN;
default:
return null;
}
}
public static PlayerRank findRank(String string)
{
try
{
@ -97,4 +146,17 @@ public enum PlayerRank implements Rank
return PlayerRank.NON_OP;
}
public static enum Type
{
PLAYER,
ADMIN,
ADMIN_CONSOLE;
public boolean isAdmin()
{
return this != PLAYER;
}
}
}

View File

@ -11,8 +11,6 @@ public interface Rank
public ChatColor getColor();
public String getColorString();
public String getColoredName();
public String getColoredTag();

View File

@ -45,46 +45,61 @@ public class RankManager extends AbstractService<TotalFreedomMod>
final Player player = (Player) sender;
// Display impostors
if (plugin.al.isAdminImpostor(player))
{
return PlayerRank.IMPOSTOR;
}
// Developers always show up
if (FUtil.DEVELOPERS.contains(player.getName()))
{
return TitleRank.DEVELOPER;
}
final PlayerRank playerRank = getRank((Player) sender);
final Admin admin = playerRank.isAdmin() ? plugin.al.getAdmin(sender) : null;
final PlayerRank rank = getRank(player);
final Admin admin = rank.isAdmin() ? plugin.al.getAdmin(sender) : null;
// Titles except developer are only for admins
// Non-admins don't have titles, display actual rank
if (admin == null)
{
return playerRank;
return rank;
}
// If the player's an owner, display that
if (MainConfig.get(ConfigEntry.SERVER_OWNERS, List.class).contains(player.getName()))
{
return TitleRank.OWNER;
}
final String loginMessage = admin.getLoginMessage();
return loginMessage == null ? playerRank : new CustomLoginRank(playerRank, ChatUtils.colorize(loginMessage));
// If we don't have a custom login message, use the actual rank
if (loginMessage == null)
{
return rank;
}
return new CustomLoginRank(rank, ChatUtils.colorize(loginMessage));
}
public Rank getRank(CommandSender sender)
public PlayerRank getRank(CommandSender sender)
{
if (sender instanceof Player)
{
return getRank((Player) sender);
}
// Console admin, get by name
Admin admin = plugin.al.getEntryByName(sender.getName());
// Unknown console: RCON, CONSOLE?
if (admin == null)
{ // Unknown console, RCon, CONSOLE?
return ConsoleRank.SENIOR_CONSOLE;
{
return PlayerRank.SENIOR_CONSOLE;
}
return ConsoleRank.forRank(admin.getRank());
return admin.getRank();
}
public PlayerRank getRank(Player player)
@ -107,17 +122,17 @@ public class RankManager extends AbstractService<TotalFreedomMod>
public void onPlayerJoin(PlayerJoinEvent event)
{
final Player player = event.getPlayer();
final PlayerData data = plugin.pl.getData(player);
//plugin.pl.getData(player);
final FPlayer fPlayer = plugin.pl.getPlayer(player);
// Unban admins
boolean isAdmin = plugin.al.isAdmin(player);
fPlayer.setSuperadminIdVerified(false);
if (isAdmin)
{
// Verify strict IP match
if (!plugin.al.isIdentityMatched(player))
{
fPlayer.setSuperadminIdVerified(false);
FUtil.bcastMsg("Warning: " + player.getName() + " is an admin, but is using an account not registered to one of their ip-list.", ChatColor.RED);
}
else
@ -146,8 +161,8 @@ public class RankManager extends AbstractService<TotalFreedomMod>
plugin.pl.getPlayer(player).setTag(display.getColoredTag());
try
{
String displayName = display.getColorString() + player.getName();
player.setPlayerListName(displayName.substring(0, 16));
String displayName = display.getColor() + player.getName();
player.setPlayerListName(displayName.substring(0, Math.min(displayName.length(), 16)));
}
catch (IllegalArgumentException ex)
{

View File

@ -32,12 +32,6 @@ public abstract class RankProxy implements Rank
return proxy.getColor();
}
@Override
public String getColorString()
{
return proxy.getColorString();
}
@Override
public String getColoredName()
{
@ -59,7 +53,7 @@ public abstract class RankProxy implements Rank
@Override
public boolean isAtLeast(Rank rank)
{
return rank.isAtLeast(rank);
return proxy.isAtLeast(rank);
}
@Override