Skip to content

Commit

Permalink
added a migration from the old rank handling system to the new one wi…
Browse files Browse the repository at this point in the history
…th weight
  • Loading branch information
0PandaDEV committed Jul 13, 2024
1 parent 4322889 commit 2e238ce
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 14 deletions.
2 changes: 2 additions & 0 deletions src/main/java/net/pandadev/nextron/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ public void onEnable() {
instance = this;
tablistManager = new TablistManager();

RankAPI.migration();

Languify.setup(this, this.getDataFolder().toString());
LangLoader.saveLanguages(getName(), "-" + getDescription().getVersion());
LangLoader.loadLanguage(getConfig().getString("language"));
Expand Down
53 changes: 39 additions & 14 deletions src/main/java/net/pandadev/nextron/utils/RankAPI.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,24 @@
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

public class RankAPI {
private static final FileConfiguration mainConfig = Main.getInstance().getConfig();

public static void createPlayerTeam(Player player) {
Scoreboard scoreboard = player.getScoreboard();
Team finalrank = scoreboard.getTeam("999player");
if (finalrank == null)
finalrank = scoreboard.registerNewTeam("999player");
if (finalrank == null) finalrank = scoreboard.registerNewTeam("999player");
if (Configs.feature.getBoolean("rank_system")) {
finalrank.setPrefix("§9Player §8• §7");
} else {
Expand All @@ -35,8 +37,7 @@ public static void setRank(CommandSender sender, Player player, String rank) {
return;
}
if (mainConfig.getStringList("Ranks." + rank.toLowerCase() + ".players").contains(player)) {
sender.sendMessage(Main.getPrefix()
+ Text.get("rank.set.error").replace("%p", player.getName()).replace("%r", rank.toLowerCase()));
sender.sendMessage(Main.getPrefix() + Text.get("rank.set.error").replace("%p", player.getName()).replace("%r", rank.toLowerCase()));
return;
}
removeRanks(player);
Expand All @@ -45,8 +46,7 @@ public static void setRank(CommandSender sender, Player player, String rank) {
mainConfig.set("Ranks." + rank.toLowerCase() + ".players", list);
Main.getInstance().saveConfig();
Main.getInstance().getTablistManager().setAllPlayerTeams();
sender.sendMessage(Main.getPrefix()
+ Text.get("rank.set.success").replace("%p", player.getName()).replace("%r", rank.toLowerCase()));
sender.sendMessage(Main.getPrefix() + Text.get("rank.set.success").replace("%p", player.getName()).replace("%r", rank.toLowerCase()));
}

public static void removeRanks(Player player) {
Expand Down Expand Up @@ -95,23 +95,19 @@ public static void setPrefix(Player player, String rank, String prefix) {
mainConfig.set("Ranks." + rank.toLowerCase() + ".prefix", prefix.substring(1));
Main.getInstance().saveConfig();
Main.getInstance().getTablistManager().setAllPlayerTeams();
player.sendMessage(Main.getPrefix() + Text.get("rank.setprefix.success").replace("%r", rank.toLowerCase())
.replace("%p", prefix.substring(1)));
player.sendMessage(Main.getPrefix() + Text.get("rank.setprefix.success").replace("%r", rank.toLowerCase()).replace("%p", prefix.substring(1)));
}

public static void rename(Player player, String rank, String name) {
if (mainConfig.get("Ranks." + rank.toLowerCase()) == null) {
player.sendMessage(Main.getPrefix() + Text.get("rank.dontexists"));
return;
}
mainConfig.set("Ranks." + name.substring(1).toLowerCase() + ".prefix",
mainConfig.get("Ranks." + rank.toLowerCase() + ".prefix"));
mainConfig.set("Ranks." + name.substring(1).toLowerCase() + ".players",
mainConfig.get("Ranks." + rank.toLowerCase() + ".players"));
mainConfig.set("Ranks." + name.substring(1).toLowerCase() + ".prefix", mainConfig.get("Ranks." + rank.toLowerCase() + ".prefix"));
mainConfig.set("Ranks." + name.substring(1).toLowerCase() + ".players", mainConfig.get("Ranks." + rank.toLowerCase() + ".players"));
mainConfig.set("Ranks." + rank.toLowerCase(), null);
Main.getInstance().saveConfig();
player.sendMessage(Main.getPrefix() + Text.get("rank.rename.success").replace("%r", rank.toLowerCase())
.replace("%n", name.toLowerCase().substring(1)));
player.sendMessage(Main.getPrefix() + Text.get("rank.rename.success").replace("%r", rank.toLowerCase()).replace("%n", name.toLowerCase().substring(1)));
}

public static String getRank(Player player) {
Expand Down Expand Up @@ -164,4 +160,33 @@ public static String getHighestNumber() {
return String.format("%03d", Math.min(highestNumber + 1, 998));
}


public static void migration() {
ConfigurationSection ranksSection = mainConfig.getConfigurationSection("Ranks");
if (ranksSection == null)
return;

Map<String, Object> oldRanks = new LinkedHashMap<>(ranksSection.getValues(false));
ranksSection.getKeys(false).forEach(key -> ranksSection.set(key, null));

boolean needsMigration = oldRanks.keySet().stream()
.anyMatch(key -> !key.matches("^\\d{3}.*"));

if (!needsMigration)
return;

int counter = 1;
for (Map.Entry<String, Object> entry : oldRanks.entrySet()) {
String oldName = entry.getKey();
String newName = String.format("%03d%s", counter, oldName);

ranksSection.set(newName, entry.getValue());
ranksSection.set(oldName, null);
counter++;
}

Main.getInstance().saveConfig();
Main.getInstance().reloadConfig();
}

}

0 comments on commit 2e238ce

Please sign in to comment.