mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-06-29 19:46:42 +00:00
Mavenized project
This commit is contained in:
@ -0,0 +1,97 @@
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package me.totalfreedom.totalfreedommod.rank;
|
||||
|
||||
public class CustomLoginRank extends RankProxy
|
||||
{
|
||||
|
||||
private String loginMessage;
|
||||
|
||||
public CustomLoginRank(PlayerRank rank, String loginMessage)
|
||||
{
|
||||
super(rank);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColoredLoginMessage()
|
||||
{
|
||||
return loginMessage;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,99 @@
|
||||
package me.totalfreedom.totalfreedommod.rank;
|
||||
|
||||
import lombok.Getter;
|
||||
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);
|
||||
//
|
||||
@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)
|
||||
{
|
||||
this.admin = admin;
|
||||
|
||||
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 + "]";
|
||||
|
||||
this.color = colors[0];
|
||||
String tColor = "";
|
||||
for (ChatColor lColor : colors)
|
||||
{
|
||||
tColor += lColor.toString();
|
||||
}
|
||||
colorString = tColor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColoredName()
|
||||
{
|
||||
return getColorString() + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColoredTag()
|
||||
{
|
||||
return getColor() + getTag();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColoredLoginMessage()
|
||||
{
|
||||
return determiner + " " + getColoredName();
|
||||
}
|
||||
|
||||
public boolean hasConsole()
|
||||
{
|
||||
return ConsoleRank.hasConsole(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLevel()
|
||||
{
|
||||
return ordinal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAtLeast(Rank rank)
|
||||
{
|
||||
return getLevel() >= rank.getLevel();
|
||||
}
|
||||
|
||||
public static PlayerRank forString(String string)
|
||||
{
|
||||
try
|
||||
{
|
||||
return PlayerRank.valueOf(string.toUpperCase());
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
}
|
||||
|
||||
return PlayerRank.NON_OP;
|
||||
}
|
||||
}
|
26
src/main/java/me/totalfreedom/totalfreedommod/rank/Rank.java
Normal file
26
src/main/java/me/totalfreedom/totalfreedommod/rank/Rank.java
Normal file
@ -0,0 +1,26 @@
|
||||
package me.totalfreedom.totalfreedommod.rank;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
public interface Rank
|
||||
{
|
||||
|
||||
public String getName();
|
||||
|
||||
public String getTag();
|
||||
|
||||
public ChatColor getColor();
|
||||
|
||||
public String getColorString();
|
||||
|
||||
public String getColoredName();
|
||||
|
||||
public String getColoredTag();
|
||||
|
||||
public String getColoredLoginMessage();
|
||||
|
||||
public boolean isAtLeast(Rank rank);
|
||||
|
||||
public int getLevel();
|
||||
|
||||
}
|
@ -0,0 +1,157 @@
|
||||
package me.totalfreedom.totalfreedommod.rank;
|
||||
|
||||
import java.util.List;
|
||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.config.MainConfig;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.pravian.aero.component.service.AbstractService;
|
||||
import net.pravian.aero.util.ChatUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
|
||||
public class RankManager extends AbstractService<TotalFreedomMod>
|
||||
{
|
||||
|
||||
public RankManager(TotalFreedomMod plugin)
|
||||
{
|
||||
super(plugin);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStart()
|
||||
{
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop()
|
||||
{
|
||||
}
|
||||
|
||||
public Rank getDisplayRank(CommandSender sender)
|
||||
{
|
||||
if (!(sender instanceof Player))
|
||||
{
|
||||
return getRank(sender); // Consoles don't have display ranks
|
||||
}
|
||||
|
||||
final Player player = (Player) sender;
|
||||
|
||||
// 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;
|
||||
|
||||
// Titles except developer are only for admins
|
||||
if (admin == null)
|
||||
{
|
||||
return playerRank;
|
||||
}
|
||||
|
||||
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));
|
||||
|
||||
}
|
||||
|
||||
public Rank getRank(CommandSender sender)
|
||||
{
|
||||
if (sender instanceof Player)
|
||||
{
|
||||
return getRank((Player) sender);
|
||||
}
|
||||
|
||||
Admin admin = plugin.al.getEntryByName(sender.getName());
|
||||
|
||||
if (admin == null)
|
||||
{ // Unknown console, RCon, CONSOLE?
|
||||
return ConsoleRank.SENIOR_CONSOLE;
|
||||
}
|
||||
|
||||
return ConsoleRank.forRank(admin.getRank());
|
||||
}
|
||||
|
||||
public PlayerRank getRank(Player player)
|
||||
{
|
||||
if (plugin.al.isAdminImpostor(player))
|
||||
{
|
||||
return PlayerRank.IMPOSTOR;
|
||||
}
|
||||
|
||||
final Admin entry = plugin.al.getAdmin(player);
|
||||
if (entry == null)
|
||||
{
|
||||
return player.isOp() ? PlayerRank.OP : PlayerRank.NON_OP;
|
||||
}
|
||||
|
||||
return entry.getRank();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerJoin(PlayerJoinEvent event)
|
||||
{
|
||||
final Player player = event.getPlayer();
|
||||
final PlayerData data = plugin.pl.getData(player);
|
||||
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
||||
|
||||
// Unban admins
|
||||
boolean isAdmin = plugin.al.isAdmin(player);
|
||||
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
|
||||
{
|
||||
fPlayer.setSuperadminIdVerified(true);
|
||||
plugin.al.updateLastLogin(player);
|
||||
}
|
||||
}
|
||||
|
||||
// Handle impostors
|
||||
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());
|
||||
player.getInventory().clear();
|
||||
player.setOp(false);
|
||||
player.setGameMode(GameMode.SURVIVAL);
|
||||
plugin.pl.getPlayer(player).getFreezeData().setFrozen(true);
|
||||
}
|
||||
|
||||
// Set display
|
||||
Rank display = getDisplayRank(player);
|
||||
if (isAdmin || FUtil.DEVELOPERS.contains(player.getName()))
|
||||
{
|
||||
FUtil.bcastMsg(ChatColor.AQUA + player.getName() + " is " + display.getColoredLoginMessage());
|
||||
plugin.pl.getPlayer(player).setTag(display.getColoredTag());
|
||||
try
|
||||
{
|
||||
String displayName = display.getColorString() + player.getName();
|
||||
player.setPlayerListName(displayName.substring(0, 16));
|
||||
}
|
||||
catch (IllegalArgumentException ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
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 getColorString()
|
||||
{
|
||||
return proxy.getColorString();
|
||||
}
|
||||
|
||||
@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 rank.isAtLeast(rank);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLevel()
|
||||
{
|
||||
return proxy.getLevel();
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package me.totalfreedom.totalfreedommod.rank;
|
||||
|
||||
import lombok.Getter;
|
||||
import org.bukkit.ChatColor;
|
||||
|
||||
public enum TitleRank implements Rank
|
||||
{
|
||||
|
||||
DEVELOPER("a", "Dev", ChatColor.DARK_PURPLE),
|
||||
OWNER("the", "Owner", ChatColor.BLUE);
|
||||
|
||||
@Getter
|
||||
private final String name;
|
||||
private final String determiner;
|
||||
@Getter
|
||||
private final String tag;
|
||||
@Getter
|
||||
private final ChatColor color;
|
||||
@Getter
|
||||
private final String colorString;
|
||||
|
||||
private TitleRank(String determiner, String tag, ChatColor... colors)
|
||||
{
|
||||
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 + "]";
|
||||
|
||||
this.color = colors[0];
|
||||
String tColor = "";
|
||||
for (ChatColor lColor : colors)
|
||||
{
|
||||
tColor += lColor.toString();
|
||||
}
|
||||
colorString = tColor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColoredName()
|
||||
{
|
||||
return getColorString() + getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColoredTag()
|
||||
{
|
||||
return getColorString() + getTag();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getColoredLoginMessage()
|
||||
{
|
||||
return determiner + " " + getColoredName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLevel()
|
||||
{
|
||||
return ordinal();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAtLeast(Rank rank)
|
||||
{
|
||||
return getLevel() >= rank.getLevel();
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user