lb bonita
This commit is contained in:
parent
9fd1d5c274
commit
de85d51556
|
@ -16,10 +16,10 @@ import land.battle.practice.util.CC;
|
|||
import land.battle.practice.util.division.RankedDivision;
|
||||
import org.bson.Document;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
|
||||
|
@ -27,11 +27,9 @@ import java.util.stream.IntStream;
|
|||
* @author BattleLand Team
|
||||
* @since 7/29/2021
|
||||
*/
|
||||
|
||||
public class LeaderboardUpdateRunnable implements Runnable {
|
||||
|
||||
public static final List<String> GLOBAL_ELO_LEADERBOARD_LORE = new ArrayList<>();
|
||||
|
||||
public static final Map<Kit, List<String>> KIT_SPECIFIC_LEADERBOARD_LORE = new HashMap<>();
|
||||
public static final Map<Kit, List<String>> KIT_SPECIFIC_LEADERBOARD_LORE_SHORT = new HashMap<>();
|
||||
public static final Map<Kit, List<String>> KIT_SPECIFIC_WIN_STREAK_LORE = new HashMap<>();
|
||||
|
@ -39,6 +37,8 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
|||
|
||||
@Override
|
||||
public void run() {
|
||||
DecimalFormat decimalFormat = new DecimalFormat("#,###");
|
||||
|
||||
CompletableFuture.runAsync(() -> {
|
||||
Practice.getInstance().getKitManager().getKits().stream().filter(Kit::isRanked).forEach(kit -> {
|
||||
final Map<UUID, Integer> allEloMap = new HashMap<>();
|
||||
|
@ -64,7 +64,6 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
|||
}
|
||||
allKillStreaksMap.put(playerUuid, value);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
final List<UUID> sortedUuids = new HashSet<>(allEloMap.keySet()).stream()
|
||||
|
@ -76,11 +75,35 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
|||
final List<String> loreEloShort = new ArrayList<>();
|
||||
|
||||
sortedUuids.forEach(uuid -> {
|
||||
if (integer.get() != 10) {
|
||||
if (integer.get() < 3) { // primeiro, segundo e terceiro lugar
|
||||
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection().find(Filters.eq("uuid", uuid.toString())).first();
|
||||
|
||||
if (playerDocument != null) {
|
||||
lore.add(CC.GOLD + "#" + integer.incrementAndGet() + " " + CC.WHITE + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + allEloMap.getOrDefault(uuid, 1000));
|
||||
int rank = integer.incrementAndGet();
|
||||
String color = String.valueOf(CC.YELLOW);
|
||||
String symbol = "✫";
|
||||
|
||||
switch (rank) {
|
||||
case 1:
|
||||
color = String.valueOf(CC.GOLD);
|
||||
break;
|
||||
case 2:
|
||||
color = String.valueOf(CC.GRAY);
|
||||
break;
|
||||
case 3:
|
||||
color = String.valueOf(CC.DARK_GRAY);
|
||||
break;
|
||||
}
|
||||
|
||||
lore.add(color + symbol + rank + " " + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + decimalFormat.format(allEloMap.getOrDefault(uuid, 1000)));
|
||||
}
|
||||
} else if (integer.get() >= 3 && integer.get() < 10) { // quarto até o décimo lugar
|
||||
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection().find(Filters.eq("uuid", uuid.toString())).first();
|
||||
|
||||
if (playerDocument != null) {
|
||||
int rank = integer.incrementAndGet();
|
||||
|
||||
lore.add(String.valueOf(CC.YELLOW) + "#" + rank + " " + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + decimalFormat.format(allEloMap.getOrDefault(uuid, 1000)));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -90,7 +113,6 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
|||
}
|
||||
|
||||
LeaderboardUpdateRunnable.KIT_SPECIFIC_LEADERBOARD_LORE_SHORT.put(kit, loreEloShort);
|
||||
|
||||
LeaderboardUpdateRunnable.KIT_SPECIFIC_LEADERBOARD_LORE.put(kit, lore);
|
||||
|
||||
final List<String> loreForKillStreaks = new ArrayList<>();
|
||||
|
@ -103,19 +125,23 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
|||
final AtomicInteger integerForKillStreaks = new AtomicInteger();
|
||||
|
||||
sortedUuidsForKillStreaks.forEach(uuid -> {
|
||||
if (integerForKillStreaks.get() != 10) {
|
||||
if (integerForKillStreaks.get() < 3) { // primeiro, segundo e terceiro lugar
|
||||
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection().find(Filters.eq("uuid", uuid.toString())).first();
|
||||
|
||||
if (playerDocument != null) {
|
||||
loreForKillStreaks.add(CC.GOLD + "#" + integerForKillStreaks.incrementAndGet() + " " + CC.WHITE + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + allKillStreaksMap.get(uuid));
|
||||
loreForKillStreaks.add(CC.GOLD + "✫" + integerForKillStreaks.incrementAndGet() + " " + CC.WHITE + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + decimalFormat.format(allKillStreaksMap.get(uuid))); // Adicione decimalFormat aqui
|
||||
}
|
||||
} else if (integerForKillStreaks.get() >= 3 && integerForKillStreaks.get() < 10) { // quarto até o décimo lugar
|
||||
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection().find(Filters.eq("uuid", uuid.toString())).first();
|
||||
|
||||
if (playerDocument != null) {
|
||||
loreForKillStreaks.add(CC.YELLOW + "#" + integerForKillStreaks.incrementAndGet() + " " + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + decimalFormat.format(allKillStreaksMap.get(uuid))); // Adicione decimalFormat aqui
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
if (loreForKillStreaks.size() >= 3) {
|
||||
IntStream.range(0, 3).forEach(i -> {
|
||||
loreForKillStreaksShort.add(" " + loreForKillStreaks.get(i));
|
||||
});
|
||||
IntStream.range(0, 3).forEach(i -> loreForKillStreaksShort.add(" " + loreForKillStreaks.get(i)));
|
||||
}
|
||||
|
||||
LeaderboardUpdateRunnable.KIT_SPECIFIC_WIN_STREAK_LORE.put(kit, loreForKillStreaks);
|
||||
|
@ -140,7 +166,7 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
|||
final AtomicInteger integer = new AtomicInteger();
|
||||
|
||||
sortedUuids.forEach(uuid -> {
|
||||
if (integer.get() != 11) {
|
||||
if (integer.get() < 3) { // primeiro, segundo e terceiro lugar
|
||||
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection()
|
||||
.find(Filters.eq("uuid", uuid.toString())).first();
|
||||
|
||||
|
@ -149,7 +175,37 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
|||
final RankedDivision rankedDivision = RankedDivision.getByGlobalElo(globalElo);
|
||||
|
||||
if (rankedDivision != null) {
|
||||
lore.add(CC.GOLD + "#" + integer.incrementAndGet() + " " + CC.WHITE + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + globalElo + CC.GRAY + " - " + rankedDivision.getFancyName());
|
||||
int rank = integer.incrementAndGet();
|
||||
String color = String.valueOf(CC.YELLOW);
|
||||
String symbol = "✫";
|
||||
|
||||
lore.add(color + symbol + rank + " " + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + decimalFormat.format(globalElo) + CC.GRAY + " - " + rankedDivision.getFancyName()); // Adic
|
||||
switch (rank) {
|
||||
case 1:
|
||||
color = String.valueOf(CC.GOLD);
|
||||
break;
|
||||
case 2:
|
||||
color = String.valueOf(CC.WHITE);
|
||||
break;
|
||||
case 3:
|
||||
color = String.valueOf(CC.BLACK);
|
||||
break;
|
||||
}
|
||||
|
||||
lore.add(color + symbol + rank + " " + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + decimalFormat.format(globalElo) + CC.GRAY + " - " + rankedDivision.getFancyName());
|
||||
}
|
||||
}
|
||||
} else if (integer.get() >= 3 && integer.get() < 11) { // quarto até o décimo primeiro lugar
|
||||
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection()
|
||||
.find(Filters.eq("uuid", uuid.toString())).first();
|
||||
|
||||
if (playerDocument != null) {
|
||||
final int globalElo = globalEloMap.get(uuid);
|
||||
final RankedDivision rankedDivision = RankedDivision.getByGlobalElo(globalElo);
|
||||
|
||||
if (rankedDivision != null) {
|
||||
int rank = integer.incrementAndGet();
|
||||
lore.add(String.valueOf(CC.YELLOW) + "#" + rank + " " + playerDocument.getString("name") + CC.GRAY + " - " + CC.YELLOW + decimalFormat.format(globalElo) + CC.GRAY + " - " + rankedDivision.getFancyName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
package land.battle.practice.util;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public class ClassUtil {
|
||||
|
||||
/**
|
||||
* Obtém todas as classes dentro de um pacote especificado.
|
||||
*
|
||||
* @param classLoader O ClassLoader a ser usado para carregar as classes.
|
||||
* @param packageName O nome do pacote a ser escaneado.
|
||||
* @return Um conjunto de classes dentro do pacote especificado.
|
||||
*/
|
||||
public static Set<Class<?>> getClasses(ClassLoader classLoader, String packageName) {
|
||||
Set<Class<?>> classes = new HashSet<>();
|
||||
String path = packageName.replace('.', '/');
|
||||
Enumeration<URL> resources;
|
||||
|
||||
try {
|
||||
resources = classLoader.getResources(path);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return classes;
|
||||
}
|
||||
|
||||
while (resources.hasMoreElements()) {
|
||||
URL resource = resources.nextElement();
|
||||
File directory = new File(resource.getFile());
|
||||
|
||||
if (!directory.exists()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
File[] files = directory.listFiles();
|
||||
|
||||
if (files == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (File file : files) {
|
||||
if (file.isDirectory()) {
|
||||
classes.addAll(getClasses(classLoader, packageName + "." + file.getName()));
|
||||
} else if (file.getName().endsWith(".class")) {
|
||||
String className = packageName + '.' + file.getName().substring(0, file.getName().length() - 6);
|
||||
|
||||
try {
|
||||
Class<?> clazz = Class.forName(className);
|
||||
classes.add(clazz);
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return classes;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue