Many changes for TFM 5.0

Improved admin system
Improved Rank system
Implemented config converter
Improved command handling
Updated Aero
This commit is contained in:
Jerom van der Sar
2016-03-06 16:56:15 +01:00
parent 055973aa37
commit 6edb6be7d9
153 changed files with 1105 additions and 1144 deletions

View File

@ -1,19 +0,0 @@
package me.totalfreedom.totalfreedommod.rank;
public class CustomLoginRank extends RankProxy
{
private String loginMessage;
public CustomLoginRank(Rank rank, String loginMessage)
{
super(rank);
}
@Override
public String getColoredLoginMessage()
{
return loginMessage;
}
}

View File

@ -1,162 +0,0 @@
package me.totalfreedom.totalfreedommod.rank;
import lombok.Getter;
import org.bukkit.ChatColor;
public enum PlayerRank implements Rank
{
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;
private PlayerRank()
{
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)
{
tempName = Character.toUpperCase(part.charAt(0)) + part.substring(1) + " ";
}
name = tempName.trim();
this.determiner = determiner;
this.tag = "[" + tag + "]";
// 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 getColor() + getName();
}
@Override
public String getColoredTag()
{
return getColor() + getTag();
}
@Override
public String getColoredLoginMessage()
{
return determiner + " " + getColoredName();
}
public boolean isConsole()
{
return getType() == Type.ADMIN_CONSOLE;
}
@Override
public int getLevel()
{
return ordinal();
}
@Override
public boolean isAtLeast(Rank rank)
{
return getLevel() >= rank.getLevel();
}
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
{
return PlayerRank.valueOf(string.toUpperCase());
}
catch (Exception ignored)
{
}
return PlayerRank.NON_OP;
}
public static enum Type
{
PLAYER,
ADMIN,
ADMIN_CONSOLE;
public boolean isAdmin()
{
return this != PLAYER;
}
}
}

View File

@ -1,24 +1,163 @@
package me.totalfreedom.totalfreedommod.rank;
import lombok.Getter;
import org.bukkit.ChatColor;
public interface Rank
public enum Rank implements RankBase
{
public String getName();
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;
public String getTag();
private Rank()
{
this("Console", Type.ADMIN_CONSOLE, "the", "Console", ChatColor.DARK_PURPLE);
}
public ChatColor getColor();
private Rank(Type type, String determiner, String tag, ChatColor color)
{
this.type = type;
public String getColoredName();
// Name
final String[] nameParts = name().toLowerCase().split("_");
String tempName = "";
for (String part : nameParts)
{
tempName = Character.toUpperCase(part.charAt(0)) + part.substring(1) + " ";
}
name = tempName.trim();
public String getColoredTag();
this.determiner = determiner;
this.tag = tag.length() > 0 ? "[" + tag + "]" : "";
public String getColoredLoginMessage();
// Colors
this.color = color;
}
public boolean isAtLeast(Rank rank);
private Rank(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;
}
public int getLevel();
@Override
public String getColoredName()
{
return getColor() + getName();
}
@Override
public String getColoredTag()
{
return getColor() + getTag();
}
@Override
public String getColoredLoginMessage()
{
return determiner + " " + getColoredName();
}
public boolean isConsole()
{
return getType() == Type.ADMIN_CONSOLE;
}
@Override
public int getLevel()
{
return ordinal();
}
@Override
public boolean isAtLeast(RankBase rank)
{
return getLevel() >= rank.getLevel();
}
public boolean isAdmin()
{
return getType() == Type.ADMIN || getType() == Type.ADMIN_CONSOLE;
}
public boolean hasConsole()
{
return getConsoleVariant() != null;
}
public Rank 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 Rank 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 Rank findRank(String string)
{
try
{
return Rank.valueOf(string.toUpperCase());
}
catch (Exception ignored)
{
}
return Rank.NON_OP;
}
public static enum Type
{
PLAYER,
ADMIN,
ADMIN_CONSOLE;
public boolean isAdmin()
{
return this != PLAYER;
}
}
}

View File

@ -0,0 +1,24 @@
package me.totalfreedom.totalfreedommod.rank;
import org.bukkit.ChatColor;
public interface RankBase
{
public String getName();
public String getTag();
public ChatColor getColor();
public String getColoredName();
public String getColoredTag();
public String getColoredLoginMessage();
public boolean isAtLeast(RankBase rank);
public int getLevel();
}

View File

@ -8,7 +8,6 @@ import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.config.MainConfig;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.util.FUtil;
import net.pravian.aero.util.ChatUtils;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.command.CommandSender;
@ -35,7 +34,7 @@ public class RankManager extends FreedomService
{
}
public Rank getDisplayRank(CommandSender sender)
public RankBase getDisplay(CommandSender sender)
{
if (!(sender instanceof Player))
{
@ -47,20 +46,19 @@ public class RankManager extends FreedomService
// Display impostors
if (plugin.al.isAdminImpostor(player))
{
return PlayerRank.IMPOSTOR;
return Rank.IMPOSTOR;
}
// Developers always show up
if (FUtil.DEVELOPERS.contains(player.getName()))
{
return TitleRank.DEVELOPER;
return Title.DEVELOPER;
}
final PlayerRank rank = getRank(player);
final Admin admin = rank.isAdmin() ? plugin.al.getAdmin(sender) : null;
final Rank rank = getRank(player);
// Non-admins don't have titles, display actual rank
if (admin == null)
if (!rank.isAdmin())
{
return rank;
}
@ -68,21 +66,13 @@ public class RankManager extends FreedomService
// If the player's an owner, display that
if (MainConfig.get(ConfigEntry.SERVER_OWNERS, List.class).contains(player.getName()))
{
return TitleRank.OWNER;
return Title.OWNER;
}
final String loginMessage = admin.getLoginMessage();
// 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));
return rank;
}
public PlayerRank getRank(CommandSender sender)
public Rank getRank(CommandSender sender)
{
if (sender instanceof Player)
{
@ -90,8 +80,9 @@ public class RankManager extends FreedomService
}
// CONSOLE?
if (sender.getName().equals("CONSOLE")) {
return ConfigEntry.ADMINLIST_CONSOLE_IS_SENIOR.getBoolean() ? PlayerRank.SENIOR_CONSOLE : PlayerRank.TELNET_CONSOLE;
if (sender.getName().equals("CONSOLE"))
{
return ConfigEntry.ADMINLIST_CONSOLE_IS_SENIOR.getBoolean() ? Rank.SENIOR_CONSOLE : Rank.TELNET_CONSOLE;
}
// Console admin, get by name
@ -100,17 +91,17 @@ public class RankManager extends FreedomService
// Unknown console: RCON?
if (admin == null)
{
return PlayerRank.SENIOR_CONSOLE;
return Rank.SENIOR_CONSOLE;
}
return admin.getRank();
}
public PlayerRank getRank(Player player)
public Rank getRank(Player player)
{
if (plugin.al.isAdminImpostor(player))
{
return PlayerRank.IMPOSTOR;
return Rank.IMPOSTOR;
}
final Admin entry = plugin.al.getAdmin(player);
@ -119,7 +110,7 @@ public class RankManager extends FreedomService
return entry.getRank();
}
return player.isOp() ? PlayerRank.OP : PlayerRank.NON_OP;
return player.isOp() ? Rank.OP : Rank.NON_OP;
}
@EventHandler(priority = EventPriority.MONITOR)
@ -150,19 +141,32 @@ public class RankManager extends FreedomService
if (plugin.al.isAdminImpostor(player))
{
FUtil.bcastMsg("Warning: " + player.getName() + " has been flagged as an impostor and has been frozen!", ChatColor.RED);
FUtil.bcastMsg(ChatColor.AQUA + player.getName() + " is " + plugin.rm.getDisplayRank(player).getColoredLoginMessage());
FUtil.bcastMsg(ChatColor.AQUA + player.getName() + " is " + Rank.IMPOSTOR.getColoredLoginMessage());
player.getInventory().clear();
player.setOp(false);
player.setGameMode(GameMode.SURVIVAL);
plugin.pl.getPlayer(player).getFreezeData().setFrozen(true);
player.sendMessage(ChatColor.RED + "You are marked as an impostor, please verify yourself!");
}
// Set display
Rank display = getDisplayRank(player);
if (isAdmin || FUtil.DEVELOPERS.contains(player.getName()))
{
FUtil.bcastMsg(ChatColor.AQUA + player.getName() + " is " + display.getColoredLoginMessage());
final RankBase display = getDisplay(player);
String loginMsg = display.getColoredLoginMessage();
if (isAdmin)
{
Admin admin = plugin.al.getAdmin(player);
if (admin.hasLoginMessage())
{
loginMsg = admin.getLoginMessage();
}
}
FUtil.bcastMsg(ChatColor.AQUA + player.getName() + " is " + loginMsg);
plugin.pl.getPlayer(player).setTag(display.getColoredTag());
try
{
String displayName = display.getColor() + player.getName();

View File

@ -1,65 +0,0 @@
package me.totalfreedom.totalfreedommod.rank;
import lombok.Getter;
import org.bukkit.ChatColor;
public abstract class RankProxy implements Rank
{
@Getter
protected final Rank proxy;
public RankProxy(Rank rank)
{
this.proxy = rank;
}
@Override
public String getName()
{
return proxy.getName();
}
@Override
public String getTag()
{
return proxy.getTag();
}
@Override
public ChatColor getColor()
{
return proxy.getColor();
}
@Override
public String getColoredName()
{
return proxy.getColoredName();
}
@Override
public String getColoredTag()
{
return proxy.getColoredTag();
}
@Override
public String getColoredLoginMessage()
{
return proxy.getColoredLoginMessage();
}
@Override
public boolean isAtLeast(Rank rank)
{
return proxy.isAtLeast(rank);
}
@Override
public int getLevel()
{
return proxy.getLevel();
}
}

View File

@ -3,7 +3,7 @@ package me.totalfreedom.totalfreedommod.rank;
import lombok.Getter;
import org.bukkit.ChatColor;
public enum TitleRank implements Rank
public enum Title implements RankBase
{
DEVELOPER("a", "Dev", ChatColor.DARK_PURPLE),
@ -19,7 +19,7 @@ public enum TitleRank implements Rank
@Getter
private final String colorString;
private TitleRank(String determiner, String tag, ChatColor... colors)
private Title(String determiner, String tag, ChatColor... colors)
{
final String[] nameParts = name().toLowerCase().split("_");
String tempName = "";
@ -66,7 +66,7 @@ public enum TitleRank implements Rank
}
@Override
public boolean isAtLeast(Rank rank)
public boolean isAtLeast(RankBase rank)
{
return getLevel() >= rank.getLevel();
}