This commit is contained in:
2021-01-03 01:21:15 -06:00
parent 8ecc1d2fce
commit 5bafa1122c
91 changed files with 452 additions and 460 deletions

View File

@ -0,0 +1,22 @@
package dev.plex.rank;
import com.google.common.collect.Lists;
import dev.plex.rank.enums.Rank;
import java.util.List;
import lombok.Getter;
@Getter
public class DefaultRankObj
{
private final String prefix;
private final String loginMSG;
private final List<String> permissions;
public DefaultRankObj(Rank rank)
{
this.prefix = rank.getPrefix();
this.loginMSG = rank.getLoginMSG();
this.permissions = Lists.newArrayList();
permissions.add("example.permission");
}
}

View File

@ -0,0 +1,102 @@
package dev.plex.rank;
import com.google.common.collect.Maps;
import dev.plex.Plex;
import dev.plex.player.PlexPlayer;
import dev.plex.util.PlexLog;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Map;
import java.util.stream.Collectors;
import dev.plex.rank.enums.Rank;
import org.json.JSONObject;
import org.json.JSONTokener;
public class RankManager
{
private final File defaultRanks;
public RankManager()
{
File ranksFolder = new File(Plex.get().getDataFolder() + File.separator + "ranks");
if (!ranksFolder.exists())
{
ranksFolder.mkdir();
}
defaultRanks = new File(ranksFolder, "default-ranks.json");
}
public void generateDefaultRanks()
{
if (defaultRanks.exists())
{
return;
}
try
{
defaultRanks.createNewFile();
Map<String, DefaultRankObj> rankMap = Maps.newHashMap();
for (Rank rank : Rank.values())
{
rankMap.put(rank.name().toUpperCase(), new DefaultRankObj(rank));
}
JSONObject obj = new JSONObject();
if (obj.length() == 0)
{
obj.put("ranks", rankMap);
FileWriter writer = new FileWriter(defaultRanks);
writer.append(obj.toString(4));
writer.flush();
writer.close();
PlexLog.log("Generating default-ranks.json");
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void importDefaultRanks()
{
if (!defaultRanks.exists())
{
return;
}
try
{
FileInputStream stream = new FileInputStream(defaultRanks);
JSONTokener tokener = new JSONTokener(stream);
JSONObject object = new JSONObject(tokener);
JSONObject rankObj = object.getJSONObject("ranks");
for (Rank rank : Rank.values())
{
if (rankObj.isNull(rank.name().toUpperCase()))
{
continue;
}
rank.setLoginMessage(rankObj.getJSONObject(rank.name().toUpperCase()).getString("loginMSG"));
rank.setPrefix(rankObj.getJSONObject(rank.name().toUpperCase()).getString("prefix")); //should i even be doing this
rank.setPermissions(rankObj.getJSONObject(rank.name().toUpperCase()).getJSONArray("permissions").toList().stream().map(Object::toString).collect(Collectors.toList()));
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
public boolean isAdmin(PlexPlayer plexPlayer)
{
return !plexPlayer.getRank().isEmpty() && plexPlayer.getRankFromString().isAtLeast(Rank.ADMIN);
}
}

View File

@ -0,0 +1,68 @@
package dev.plex.rank.enums;
import com.google.common.collect.Lists;
import java.util.List;
import org.bukkit.ChatColor;
public enum Rank
{
IMPOSTOR(-1, ChatColor.AQUA + "an " + ChatColor.YELLOW + "Impostor", ChatColor.YELLOW + "[Imp]"),
NONOP(0, "a " + ChatColor.WHITE + "Non-Op", ChatColor.WHITE + ""),
OP(1, "an " + ChatColor.GREEN + "Operator", ChatColor.GREEN + "[OP]"),
ADMIN(2, "an " + ChatColor.DARK_GREEN + "Admin", ChatColor.DARK_GREEN + "[Admin]"),
SENIOR_ADMIN(3, "a " + ChatColor.GOLD + "Senior Admin", ChatColor.GOLD + "[SrA]"),
EXECUTIVE(4, "an " + ChatColor.RED + "Executive", ChatColor.RED + "[Exec]");
private String loginMessage;
private String prefix;
private int level;
private List<String> permissions;
Rank(int level, String loginMessage, String prefix)
{
this.level = level;
this.loginMessage = loginMessage;
this.prefix = prefix;
this.permissions = Lists.newArrayList();
}
public String getPrefix()
{
return ChatColor.translateAlternateColorCodes('&', prefix);
}
public String getLoginMSG()
{
return ChatColor.translateAlternateColorCodes('&', loginMessage);
}
public int getLevel()
{
return level;
}
public void setLoginMessage(String msg)
{
this.loginMessage = msg;
}
public void setPrefix(String prefix)
{
this.prefix = prefix;
}
public boolean isAtLeast(Rank rank)
{
return getLevel() >= rank.getLevel();
}
public List<String> getPermissions()
{
return permissions;
}
public void setPermissions(List<String> permissions)
{
this.permissions = permissions;
}
}

View File

@ -0,0 +1,21 @@
package dev.plex.rank.enums;
import org.bukkit.ChatColor;
public enum Title
{
MASTER_BUILDER(0, ChatColor.AQUA + "a " + ChatColor.DARK_AQUA + "Master Builder", ChatColor.DARK_AQUA + "[MB]"),
DEV(1, ChatColor.AQUA + "a " + ChatColor.DARK_PURPLE + "Developer", ChatColor.DARK_PURPLE + "[DEV]"),
OWNER(2, ChatColor.AQUA + "an " + ChatColor.BLUE + "Owner", ChatColor.BLUE + "[Owner]");
private int level;
private String loginMSG;
private String prefix;
Title(int level, String loginMSG, String prefix)
{
this.level = level;
this.loginMSG = loginMSG;
this.prefix = prefix;
}
}