mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-02-03 05:51:28 +01:00
parent
5c53368f28
commit
36a9825442
@ -10,22 +10,16 @@ import com.djrapitops.plan.data.element.TableContainer;
|
|||||||
import com.djrapitops.plan.data.plugin.ContainerSize;
|
import com.djrapitops.plan.data.plugin.ContainerSize;
|
||||||
import com.djrapitops.plan.data.plugin.PluginData;
|
import com.djrapitops.plan.data.plugin.PluginData;
|
||||||
import com.djrapitops.plan.utilities.FormatUtils;
|
import com.djrapitops.plan.utilities.FormatUtils;
|
||||||
import com.djrapitops.plan.utilities.analysis.MathUtils;
|
|
||||||
import com.djrapitops.plan.utilities.html.Html;
|
import com.djrapitops.plan.utilities.html.Html;
|
||||||
import com.gmail.nossr50.database.DatabaseManager;
|
import com.gmail.nossr50.database.DatabaseManager;
|
||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
|
|
||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
import com.gmail.nossr50.datatypes.player.PlayerProfile;
|
||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||||
import com.gmail.nossr50.mcMMO;
|
import com.gmail.nossr50.mcMMO;
|
||||||
import com.gmail.nossr50.util.player.UserManager;
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static org.bukkit.Bukkit.getOnlinePlayers;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PluginData for McMmo plugin.
|
* PluginData for McMmo plugin.
|
||||||
*
|
*
|
||||||
@ -43,7 +37,7 @@ public class McMmoData extends PluginData {
|
|||||||
public InspectContainer getPlayerData(UUID uuid, InspectContainer inspectContainer) {
|
public InspectContainer getPlayerData(UUID uuid, InspectContainer inspectContainer) {
|
||||||
DatabaseManager db = mcMMO.getDatabaseManager();
|
DatabaseManager db = mcMMO.getDatabaseManager();
|
||||||
|
|
||||||
PlayerProfile profile = db.loadPlayerProfile(uuid);
|
PlayerProfile profile = db.loadPlayerProfile("", uuid, false);
|
||||||
|
|
||||||
String skillS = Html.FONT_AWESOME_ICON.parse("star") + " Skill";
|
String skillS = Html.FONT_AWESOME_ICON.parse("star") + " Skill";
|
||||||
String levelS = Html.FONT_AWESOME_ICON.parse("plus") + " Level";
|
String levelS = Html.FONT_AWESOME_ICON.parse("plus") + " Level";
|
||||||
@ -59,34 +53,33 @@ public class McMmoData extends PluginData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AnalysisContainer getServerData(Collection<UUID> collection, AnalysisContainer analysisContainer) {
|
public AnalysisContainer getServerData(Collection<UUID> uuids, AnalysisContainer analysisContainer) {
|
||||||
String skillS = Html.FONT_AWESOME_ICON.parse("star") + " Skill";
|
String skillS = Html.FONT_AWESOME_ICON.parse("star") + " Skill";
|
||||||
String tLevel = Html.FONT_AWESOME_ICON.parse("plus") + " Total Level";
|
String tLevel = Html.FONT_AWESOME_ICON.parse("plus") + " Total Level";
|
||||||
String aLevel = Html.FONT_AWESOME_ICON.parse("plus") + " Average Level";
|
String aLevel = Html.FONT_AWESOME_ICON.parse("plus") + " Average Level";
|
||||||
|
|
||||||
analysisContainer.addValue("Only Online Players Shown", "Skills available on Inspect pages.");
|
DatabaseManager databaseManager = mcMMO.getDatabaseManager();
|
||||||
|
|
||||||
TableContainer skillTable = new TableContainer(skillS, tLevel, aLevel);
|
TableContainer skillTable = new TableContainer(skillS, tLevel, aLevel);
|
||||||
skillTable.setColor("indigo");
|
skillTable.setColor("indigo");
|
||||||
|
|
||||||
List<PlayerProfile> profiles = getOnlinePlayers().stream()
|
List<PlayerProfile> profiles = uuids.stream()
|
||||||
|
.map(uuid -> databaseManager.loadPlayerProfile("", uuid, false))
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
.map(UserManager::getOfflinePlayer)
|
.filter(PlayerProfile::isLoaded)
|
||||||
.filter(Objects::nonNull)
|
|
||||||
.map(McMMOPlayer::getProfile)
|
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
if (profiles.isEmpty()) {
|
if (profiles.isEmpty()) {
|
||||||
skillTable.addRow("No players online");
|
skillTable.addRow("No players");
|
||||||
}
|
}
|
||||||
|
|
||||||
List<SkillType> skills = Arrays.stream(SkillType.values()).distinct().collect(Collectors.toList());
|
List<SkillType> skills = Arrays.stream(SkillType.values()).distinct().collect(Collectors.toList());
|
||||||
|
|
||||||
for (SkillType skill : skills) {
|
for (SkillType skill : skills) {
|
||||||
long total = MathUtils.sumInt(profiles.stream().map(p -> (Serializable) p.getSkillLevel(skill)));
|
long total = profiles.stream().mapToInt(p -> p.getSkillLevel(skill)).sum();
|
||||||
skillTable.addRow(
|
skillTable.addRow(
|
||||||
StringUtils.capitalize(skill.getName().toLowerCase()),
|
StringUtils.capitalize(skill.getName().toLowerCase()),
|
||||||
Long.toString(total),
|
total,
|
||||||
FormatUtils.cutDecimals(MathUtils.average((int) total, profiles.size()))
|
FormatUtils.cutDecimals(total * 1.0 / profiles.size())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user