Plex/src/main/java/dev/plex/rank/RankManager.java

113 lines
3.3 KiB
Java
Raw Normal View History

2021-01-03 07:21:15 +00:00
package dev.plex.rank;
import com.google.common.collect.Maps;
2021-01-03 07:21:15 +00:00
import dev.plex.Plex;
import dev.plex.player.PlexPlayer;
2022-01-04 03:04:39 +00:00
import dev.plex.rank.enums.Rank;
2021-01-03 07:21:15 +00:00
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;
2022-01-27 21:23:01 +00:00
import org.json.JSONObject;
import org.json.JSONTokener;
public class RankManager
{
2020-10-28 03:49:56 +00:00
private final File defaultRanks;
public RankManager()
{
2020-10-29 02:36:37 +00:00
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;
2020-10-28 03:49:56 +00:00
}
try
2020-10-28 03:49:56 +00:00
{
defaultRanks.createNewFile();
Map<String, DefaultRankObj> rankMap = Maps.newHashMap();
for (Rank rank : Rank.values())
2020-10-28 03:49:56 +00:00
{
rankMap.put(rank.name().toUpperCase(), new DefaultRankObj(rank));
2020-10-28 03:49:56 +00:00
}
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();
}
}
2022-01-29 22:35:48 +00:00
public Rank getRankFromString(String rank)
{
return Rank.valueOf(rank.toUpperCase());
}
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())
2020-10-28 03:49:56 +00:00
{
2020-11-06 01:29:38 +00:00
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.setHumanReadableString(rankObj.getJSONObject(rank.name().toUpperCase()).getString("readableName")); // i dont know
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);
}
2022-01-04 03:04:39 +00:00
public boolean isSeniorAdmin(PlexPlayer plexPlayer)
{
return !plexPlayer.getRank().isEmpty() && plexPlayer.getRankFromString().isAtLeast(Rank.SENIOR_ADMIN);
}
}