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 land.battle.practice.util.division.RankedDivision;
|
||||||
import org.bson.Document;
|
import org.bson.Document;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.concurrent.atomic.AtomicReference;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
|
|
||||||
|
@ -27,11 +27,9 @@ import java.util.stream.IntStream;
|
||||||
* @author BattleLand Team
|
* @author BattleLand Team
|
||||||
* @since 7/29/2021
|
* @since 7/29/2021
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class LeaderboardUpdateRunnable implements Runnable {
|
public class LeaderboardUpdateRunnable implements Runnable {
|
||||||
|
|
||||||
public static final List<String> GLOBAL_ELO_LEADERBOARD_LORE = new ArrayList<>();
|
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 = 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_LEADERBOARD_LORE_SHORT = new HashMap<>();
|
||||||
public static final Map<Kit, List<String>> KIT_SPECIFIC_WIN_STREAK_LORE = 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
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
DecimalFormat decimalFormat = new DecimalFormat("#,###");
|
||||||
|
|
||||||
CompletableFuture.runAsync(() -> {
|
CompletableFuture.runAsync(() -> {
|
||||||
Practice.getInstance().getKitManager().getKits().stream().filter(Kit::isRanked).forEach(kit -> {
|
Practice.getInstance().getKitManager().getKits().stream().filter(Kit::isRanked).forEach(kit -> {
|
||||||
final Map<UUID, Integer> allEloMap = new HashMap<>();
|
final Map<UUID, Integer> allEloMap = new HashMap<>();
|
||||||
|
@ -64,7 +64,6 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
||||||
}
|
}
|
||||||
allKillStreaksMap.put(playerUuid, value);
|
allKillStreaksMap.put(playerUuid, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
final List<UUID> sortedUuids = new HashSet<>(allEloMap.keySet()).stream()
|
final List<UUID> sortedUuids = new HashSet<>(allEloMap.keySet()).stream()
|
||||||
|
@ -76,11 +75,35 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
||||||
final List<String> loreEloShort = new ArrayList<>();
|
final List<String> loreEloShort = new ArrayList<>();
|
||||||
|
|
||||||
sortedUuids.forEach(uuid -> {
|
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();
|
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection().find(Filters.eq("uuid", uuid.toString())).first();
|
||||||
|
|
||||||
if (playerDocument != null) {
|
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_SHORT.put(kit, loreEloShort);
|
||||||
|
|
||||||
LeaderboardUpdateRunnable.KIT_SPECIFIC_LEADERBOARD_LORE.put(kit, lore);
|
LeaderboardUpdateRunnable.KIT_SPECIFIC_LEADERBOARD_LORE.put(kit, lore);
|
||||||
|
|
||||||
final List<String> loreForKillStreaks = new ArrayList<>();
|
final List<String> loreForKillStreaks = new ArrayList<>();
|
||||||
|
@ -103,19 +125,23 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
||||||
final AtomicInteger integerForKillStreaks = new AtomicInteger();
|
final AtomicInteger integerForKillStreaks = new AtomicInteger();
|
||||||
|
|
||||||
sortedUuidsForKillStreaks.forEach(uuid -> {
|
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();
|
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection().find(Filters.eq("uuid", uuid.toString())).first();
|
||||||
|
|
||||||
if (playerDocument != null) {
|
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) {
|
if (loreForKillStreaks.size() >= 3) {
|
||||||
IntStream.range(0, 3).forEach(i -> {
|
IntStream.range(0, 3).forEach(i -> loreForKillStreaksShort.add(" " + loreForKillStreaks.get(i)));
|
||||||
loreForKillStreaksShort.add(" " + loreForKillStreaks.get(i));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LeaderboardUpdateRunnable.KIT_SPECIFIC_WIN_STREAK_LORE.put(kit, loreForKillStreaks);
|
LeaderboardUpdateRunnable.KIT_SPECIFIC_WIN_STREAK_LORE.put(kit, loreForKillStreaks);
|
||||||
|
@ -140,7 +166,7 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
||||||
final AtomicInteger integer = new AtomicInteger();
|
final AtomicInteger integer = new AtomicInteger();
|
||||||
|
|
||||||
sortedUuids.forEach(uuid -> {
|
sortedUuids.forEach(uuid -> {
|
||||||
if (integer.get() != 11) {
|
if (integer.get() < 3) { // primeiro, segundo e terceiro lugar
|
||||||
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection()
|
final Document playerDocument = CorePlugin.getInstance().getCoreDatabase().getPlayerCollection()
|
||||||
.find(Filters.eq("uuid", uuid.toString())).first();
|
.find(Filters.eq("uuid", uuid.toString())).first();
|
||||||
|
|
||||||
|
@ -149,7 +175,37 @@ public class LeaderboardUpdateRunnable implements Runnable {
|
||||||
final RankedDivision rankedDivision = RankedDivision.getByGlobalElo(globalElo);
|
final RankedDivision rankedDivision = RankedDivision.getByGlobalElo(globalElo);
|
||||||
|
|
||||||
if (rankedDivision != null) {
|
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