mirror of
https://github.com/plexusorg/Plex.git
synced 2025-06-29 14:56:43 +00:00
tttt
This commit is contained in:
22
src/main/java/dev/plex/rank/DefaultRankObj.java
Normal file
22
src/main/java/dev/plex/rank/DefaultRankObj.java
Normal 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");
|
||||
}
|
||||
}
|
102
src/main/java/dev/plex/rank/RankManager.java
Normal file
102
src/main/java/dev/plex/rank/RankManager.java
Normal 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);
|
||||
}
|
||||
}
|
68
src/main/java/dev/plex/rank/enums/Rank.java
Normal file
68
src/main/java/dev/plex/rank/enums/Rank.java
Normal 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;
|
||||
}
|
||||
}
|
21
src/main/java/dev/plex/rank/enums/Title.java
Normal file
21
src/main/java/dev/plex/rank/enums/Title.java
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user