mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2024-12-24 10:11:53 +01:00
Begun PluginData conversion, Fixes to containers
This commit is contained in:
parent
224468e9d2
commit
3889aedddf
@ -30,13 +30,17 @@ import java.util.UUID;
|
|||||||
*/
|
*/
|
||||||
public final class AnalysisContainer extends InspectContainer {
|
public final class AnalysisContainer extends InspectContainer {
|
||||||
|
|
||||||
private TreeMap<String, Map<UUID, Serializable>> playerTableValues;
|
private TreeMap<String, Map<UUID, ? extends Serializable>> playerTableValues;
|
||||||
|
|
||||||
public AnalysisContainer() {
|
public AnalysisContainer() {
|
||||||
playerTableValues = new TreeMap<>();
|
playerTableValues = new TreeMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public TreeMap<String, Map<UUID, Serializable>> getPlayerTableValues() {
|
public TreeMap<String, Map<UUID, ? extends Serializable>> getPlayerTableValues() {
|
||||||
return playerTableValues;
|
return playerTableValues;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addPlayerTableValues(String columnName, Map<UUID, ? extends Serializable> values) {
|
||||||
|
playerTableValues.put(columnName, values);
|
||||||
|
}
|
||||||
}
|
}
|
@ -4,8 +4,6 @@
|
|||||||
*/
|
*/
|
||||||
package main.java.com.djrapitops.plan.data.additional;
|
package main.java.com.djrapitops.plan.data.additional;
|
||||||
|
|
||||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
@ -37,14 +35,6 @@ public class InspectContainer {
|
|||||||
tables = new TreeMap<>();
|
tables = new TreeMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public final String getWithIcon(String text, String icon) {
|
|
||||||
return getWithColoredIcon(text, icon, "black");
|
|
||||||
}
|
|
||||||
|
|
||||||
public final String getWithColoredIcon(String text, String icon, String color) {
|
|
||||||
return Html.FA_COLORED_ICON.parse(color, icon) + " " + text;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final void addValue(String label, Serializable value) {
|
public final void addValue(String label, Serializable value) {
|
||||||
values.put(label, value.toString());
|
values.put(label, value.toString());
|
||||||
}
|
}
|
||||||
@ -78,4 +68,8 @@ public class InspectContainer {
|
|||||||
public final boolean hasOnlyValues() {
|
public final boolean hasOnlyValues() {
|
||||||
return html.isEmpty() && tables.isEmpty();
|
return html.isEmpty() && tables.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final boolean isEmpty() {
|
||||||
|
return values.isEmpty() && html.isEmpty() && tables.isEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
@ -67,4 +67,12 @@ public abstract class PluginData {
|
|||||||
public final int hashCode() {
|
public final int hashCode() {
|
||||||
return Objects.hashCode(size, sourcePlugin, pluginIcon);
|
return Objects.hashCode(size, sourcePlugin, pluginIcon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final String getWithIcon(String text, String icon) {
|
||||||
|
return getWithIcon(text, icon, "black");
|
||||||
|
}
|
||||||
|
|
||||||
|
public final String getWithIcon(String text, String icon, String color) {
|
||||||
|
return Html.FA_COLORED_ICON.parse(color, icon) + " " + text;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,8 @@ public final class TableContainer {
|
|||||||
private final String[] header;
|
private final String[] header;
|
||||||
private List<Serializable[]> values;
|
private List<Serializable[]> values;
|
||||||
|
|
||||||
|
private String color;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor, call with super(...).
|
* Constructor, call with super(...).
|
||||||
*
|
*
|
||||||
@ -30,17 +32,15 @@ public final class TableContainer {
|
|||||||
values = new ArrayList<>();
|
values = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void addRow(Serializable... values) {
|
public void addRow(Serializable... values) {
|
||||||
this.values.add(values);
|
this.values.add(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String parseHtml() {
|
public String parseHtml() {
|
||||||
StringBuilder table = new StringBuilder(Html.TABLE.parse());
|
return Html.TABLE_COLORED.parse(color != null ? color : "") +
|
||||||
|
parseHeader() +
|
||||||
table.append(parseHeader());
|
parseBody() +
|
||||||
table.append(parseBody());
|
"</table>";
|
||||||
|
|
||||||
return table.append("</table>").toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String parseBody() {
|
private String parseBody() {
|
||||||
@ -67,6 +67,10 @@ public final class TableContainer {
|
|||||||
return Html.TABLE_BODY.parse(body.toString());
|
return Html.TABLE_BODY.parse(body.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setColor(String color) {
|
||||||
|
this.color = color;
|
||||||
|
}
|
||||||
|
|
||||||
public String parseHeader() {
|
public String parseHeader() {
|
||||||
StringBuilder header = new StringBuilder("<tr>");
|
StringBuilder header = new StringBuilder("<tr>");
|
||||||
for (String title : this.header) {
|
for (String title : this.header) {
|
||||||
|
@ -158,7 +158,7 @@ public class Analysis {
|
|||||||
Benchmark.start("Analysis", "Source " + source.getSourcePlugin());
|
Benchmark.start("Analysis", "Source " + source.getSourcePlugin());
|
||||||
|
|
||||||
AnalysisContainer container = source.getServerData(uuids, new AnalysisContainer());
|
AnalysisContainer container = source.getServerData(uuids, new AnalysisContainer());
|
||||||
if (container != null) {
|
if (container != null && !container.isEmpty()) {
|
||||||
containers.put(source, container);
|
containers.put(source, container);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,6 +54,7 @@ public enum Html {
|
|||||||
//
|
//
|
||||||
TABLE_END("</tbody></table>"),
|
TABLE_END("</tbody></table>"),
|
||||||
TABLE("<table class=\"table table-striped\">"),
|
TABLE("<table class=\"table table-striped\">"),
|
||||||
|
TABLE_COLORED("<table class=\"bg-${0} table table-striped\">"),
|
||||||
TABLE_HEAD("<thead>${0}</thead>"),
|
TABLE_HEAD("<thead>${0}</thead>"),
|
||||||
TABLE_BODY("<tbody>${0}</tbody>"),
|
TABLE_BODY("<tbody>${0}</tbody>"),
|
||||||
TABLE_START_2("<table class=\"table table-striped\"><thead><tr><th>${0}</th><th>${1}</th></tr></thead><tbody>"),
|
TABLE_START_2("<table class=\"table table-striped\"><thead><tr><th>${0}</th><th>${1}</th></tr></thead><tbody>"),
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.djrapitops</groupId>
|
<groupId>com.djrapitops</groupId>
|
||||||
<artifactId>PlanPluginBridge</artifactId>
|
<artifactId>PlanPluginBridge</artifactId>
|
||||||
<version>4.0.5</version>
|
<version>4.1.0</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
@ -24,7 +24,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.djrapitops</groupId>
|
<groupId>com.djrapitops</groupId>
|
||||||
<artifactId>Plan</artifactId>
|
<artifactId>Plan</artifactId>
|
||||||
<version>4.0.5</version>
|
<version>4.1.0</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
|
@ -1,83 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.advancedachievements;
|
|
||||||
|
|
||||||
import com.hm.achievement.api.AdvancedAchievementsAPI;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for AdvancedAchievements-plugin.
|
|
||||||
* <p>
|
|
||||||
* Registered to the plugin by AdvancedAchievementsHook.
|
|
||||||
* <p>
|
|
||||||
* Gives the amount of achievements as value.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @see AdvancedAchievementsHook
|
|
||||||
* @since 3.1.0
|
|
||||||
*/
|
|
||||||
public class AdvancedAchievementsAchievements extends PluginData {
|
|
||||||
|
|
||||||
private final AdvancedAchievementsAPI aaAPI;
|
|
||||||
private long lastRefresh;
|
|
||||||
private Map<UUID, Integer> totalAchievements;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
*
|
|
||||||
* @param aaAPI AdvancedAchievementsAPI given by AdvancedAchievementsHook
|
|
||||||
*/
|
|
||||||
public AdvancedAchievementsAchievements(AdvancedAchievementsAPI aaAPI) {
|
|
||||||
super("AdvancedAchievements", "achievements", AnalysisType.INT_TOTAL, AnalysisType.INT_AVG);
|
|
||||||
this.aaAPI = aaAPI;
|
|
||||||
super.setAnalysisOnly(false);
|
|
||||||
super.setIcon("check-circle-o");
|
|
||||||
super.setPrefix("Achievements: ");
|
|
||||||
totalAchievements = aaAPI.getPlayersTotalAchievements();
|
|
||||||
lastRefresh = MiscUtils.getTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
|
|
||||||
if (MiscUtils.getTime() - lastRefresh > 60000) {
|
|
||||||
refreshTotalAchievements();
|
|
||||||
}
|
|
||||||
Integer total = totalAchievements.get(uuid);
|
|
||||||
if (total != null) {
|
|
||||||
return parseContainer(modifierPrefix, total + "");
|
|
||||||
}
|
|
||||||
return parseContainer(modifierPrefix, "0");
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refreshTotalAchievements() {
|
|
||||||
totalAchievements = aaAPI.getPlayersTotalAchievements();
|
|
||||||
lastRefresh = MiscUtils.getTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<UUID, Serializable> getValues(Collection<UUID> uuid) {
|
|
||||||
if (MiscUtils.getTime() - lastRefresh > 60000) {
|
|
||||||
refreshTotalAchievements();
|
|
||||||
}
|
|
||||||
return new HashMap<>(totalAchievements);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
if (MiscUtils.getTime() - lastRefresh > 60000) {
|
|
||||||
refreshTotalAchievements();
|
|
||||||
}
|
|
||||||
Integer total = totalAchievements.get(uuid);
|
|
||||||
if (total != null) {
|
|
||||||
return total;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,70 @@
|
|||||||
|
/*
|
||||||
|
* Licence is provided in the jar as license.yml also here:
|
||||||
|
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||||
|
*/
|
||||||
|
package com.djrapitops.pluginbridge.plan.advancedachievements;
|
||||||
|
|
||||||
|
import com.djrapitops.plugin.api.TimeAmount;
|
||||||
|
import com.hm.achievement.api.AdvancedAchievementsAPI;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.AnalysisContainer;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.ContainerSize;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.InspectContainer;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||||
|
import main.java.com.djrapitops.plan.utilities.FormatUtils;
|
||||||
|
import main.java.com.djrapitops.plan.utilities.MiscUtils;
|
||||||
|
import main.java.com.djrapitops.plan.utilities.analysis.MathUtils;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* PluginData class for AdvancedAchievements.
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class AdvancedAchievementsData extends PluginData {
|
||||||
|
|
||||||
|
private final AdvancedAchievementsAPI aaAPI;
|
||||||
|
private long lastRefresh;
|
||||||
|
private Map<UUID, Integer> totalAchievements;
|
||||||
|
|
||||||
|
public AdvancedAchievementsData(AdvancedAchievementsAPI aaAPI) {
|
||||||
|
super(ContainerSize.THIRD, "AdvancedAchievements");
|
||||||
|
super.setPluginIcon("star");
|
||||||
|
super.setIconColor("green");
|
||||||
|
this.aaAPI = aaAPI;
|
||||||
|
refreshTotalAchievements();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InspectContainer getPlayerData(UUID uuid, InspectContainer inspectContainer) throws Exception {
|
||||||
|
String text = getWithIcon("Achievements", "check-circle-o", "green");
|
||||||
|
inspectContainer.addValue(text, aaAPI.getPlayerTotalAchievements(uuid));
|
||||||
|
|
||||||
|
return inspectContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnalysisContainer getServerData(Collection<UUID> collection, AnalysisContainer analysisContainer) throws Exception {
|
||||||
|
if (MiscUtils.getTime() - lastRefresh > TimeAmount.MINUTE.ms() * 5L) {
|
||||||
|
refreshTotalAchievements();
|
||||||
|
}
|
||||||
|
long total = getTotal(totalAchievements);
|
||||||
|
String average = FormatUtils.cutDecimals(MathUtils.averageDouble(total, totalAchievements.size()));
|
||||||
|
|
||||||
|
analysisContainer.addValue(getWithIcon("Total Achievements", "check-circle-o", "green"), total);
|
||||||
|
analysisContainer.addValue(getWithIcon("Average Achievements", "check-circle-o", "green"), average);
|
||||||
|
analysisContainer.addPlayerTableValues(getWithIcon("Achievements", "star"), totalAchievements);
|
||||||
|
return analysisContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
private long getTotal(Map<UUID, Integer> totalAchievements) {
|
||||||
|
return MathUtils.sumLong(totalAchievements.values().stream().map(i -> i));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshTotalAchievements() {
|
||||||
|
totalAchievements = aaAPI.getPlayersTotalAchievements();
|
||||||
|
lastRefresh = MiscUtils.getTime();
|
||||||
|
}
|
||||||
|
}
|
@ -36,8 +36,7 @@ public class AdvancedAchievementsHook extends Hook {
|
|||||||
AdvancedAchievements aa = getPlugin(AdvancedAchievements.class);
|
AdvancedAchievements aa = getPlugin(AdvancedAchievements.class);
|
||||||
if (Integer.parseInt(Character.toString(aa.getDescription().getVersion().charAt(0))) >= 5) {
|
if (Integer.parseInt(Character.toString(aa.getDescription().getVersion().charAt(0))) >= 5) {
|
||||||
AdvancedAchievementsAPI aaAPI = AdvancedAchievementsBukkitAPI.linkAdvancedAchievements();
|
AdvancedAchievementsAPI aaAPI = AdvancedAchievementsBukkitAPI.linkAdvancedAchievements();
|
||||||
addPluginDataSource(new AdvancedAchievementsAchievements(aaAPI));
|
addPluginDataSource(new AdvancedAchievementsData(aaAPI));
|
||||||
addPluginDataSource(new AdvancedAchievementsTable(aaAPI));
|
|
||||||
} else {
|
} else {
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
|
@ -1,85 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.advancedachievements;
|
|
||||||
|
|
||||||
import com.hm.achievement.api.AdvancedAchievementsAPI;
|
|
||||||
import main.java.com.djrapitops.plan.Plan;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for AdvancedAchievements-plugin.
|
|
||||||
* <p>
|
|
||||||
* Registered to the plugin by AdvancedAchievementsHook
|
|
||||||
* <p>
|
|
||||||
* Gives a table of players and achievements achievements.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @see AdvancedAchievementsHook
|
|
||||||
* @since 3.1.0
|
|
||||||
*/
|
|
||||||
public class AdvancedAchievementsTable extends PluginData {
|
|
||||||
|
|
||||||
private final AdvancedAchievementsAPI aaAPI;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
* <p>
|
|
||||||
* Uses Html to easily parse Html for the table.
|
|
||||||
*
|
|
||||||
* @param aaAPI AdvancedAchievementsAPI given by AdvancedAchievementsHook
|
|
||||||
* @see Html
|
|
||||||
*/
|
|
||||||
public AdvancedAchievementsTable(AdvancedAchievementsAPI aaAPI) {
|
|
||||||
super("AdvancedAchievements", "achievements_table", AnalysisType.HTML);
|
|
||||||
this.aaAPI = aaAPI;
|
|
||||||
String player = Html.FONT_AWESOME_ICON.parse("user") + " Player";
|
|
||||||
String achievements = Html.FONT_AWESOME_ICON.parse("check-circle-o") + " Achievements";
|
|
||||||
// analysisOnly true by default.
|
|
||||||
super.setPrefix(Html.TABLE_START_2.parse(player, achievements));
|
|
||||||
super.setSuffix(Html.TABLE_END.parse());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifierPrefix, UUID uuidUnused) {
|
|
||||||
StringBuilder html = new StringBuilder();
|
|
||||||
Set<UUID> users = Plan.getInstance().getDataCache().getUuids();
|
|
||||||
if (users.isEmpty()) {
|
|
||||||
html.append(Html.TABLELINE_2.parse("No Players.", ""));
|
|
||||||
} else if (aaAPI.getAdvancedAchievementsVersionCode() >= 520) {
|
|
||||||
appendTableLinesForV520Plus(users, html);
|
|
||||||
} else {
|
|
||||||
appendTableLinesForLessThanV520(users, html);
|
|
||||||
}
|
|
||||||
return parseContainer("", html.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void appendTableLinesForLessThanV520(Set<UUID> users, StringBuilder html) {
|
|
||||||
users.forEach(uuid -> {
|
|
||||||
String name = super.getNameOf(uuid);
|
|
||||||
String inspectUrl = Plan.getPlanAPI().getPlayerInspectPageLink(name);
|
|
||||||
int achievements = aaAPI.getPlayerTotalAchievements(uuid);
|
|
||||||
html.append(Html.TABLELINE_2.parse(Html.LINK.parse(inspectUrl, name), achievements));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void appendTableLinesForV520Plus(Set<UUID> users, StringBuilder html) {
|
|
||||||
Map<UUID, Integer> achievementsMap = aaAPI.getPlayersTotalAchievements();
|
|
||||||
for (Map.Entry<UUID, Integer> entry : achievementsMap.entrySet()) {
|
|
||||||
UUID uuid = entry.getKey();
|
|
||||||
int achievements = entry.getValue();
|
|
||||||
String name = getNameOf(uuid);
|
|
||||||
String inspectUrl = Plan.getPlanAPI().getPlayerInspectPageLink(name);
|
|
||||||
html.append(Html.TABLELINE_2.parse(Html.LINK.parse(inspectUrl, name), achievements));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* Licence is provided in the jar as license.yml also here:
|
||||||
|
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||||
|
*/
|
||||||
|
package com.djrapitops.pluginbridge.plan.askyblock;
|
||||||
|
|
||||||
|
import com.wasteofplastic.askyblock.ASkyBlockAPI;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.AnalysisContainer;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.ContainerSize;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.InspectContainer;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* //TODO Class Javadoc Comment
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class ASkyBlockData extends PluginData {
|
||||||
|
|
||||||
|
private final ASkyBlockAPI api;
|
||||||
|
|
||||||
|
public ASkyBlockData(ASkyBlockAPI api) {
|
||||||
|
super(ContainerSize.THIRD, "ASkyBlock");
|
||||||
|
super.setPluginIcon("street-view");
|
||||||
|
super.setIconColor("light-blue");
|
||||||
|
this.api = api;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InspectContainer getPlayerData(UUID uuid, InspectContainer inspectContainer) throws Exception {
|
||||||
|
if (api.hasIsland(uuid)) {
|
||||||
|
String islandName = api.getIslandName(uuid);
|
||||||
|
int level = api.getIslandLevel(uuid);
|
||||||
|
int resetsLeft = api.getResetsLeft(uuid);
|
||||||
|
|
||||||
|
inspectContainer.addValue(getWithIcon("Island Name", "street-view", "green"), islandName);
|
||||||
|
inspectContainer.addValue(getWithIcon("Island Level", "street-view", "amber"), level);
|
||||||
|
inspectContainer.addValue(getWithIcon("Island Resets Left", "refresh", "green"), resetsLeft);
|
||||||
|
} else {
|
||||||
|
inspectContainer.addValue(getWithIcon("Island Name", "street-view", "green"), "No Island");
|
||||||
|
}
|
||||||
|
|
||||||
|
return inspectContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnalysisContainer getServerData(Collection<UUID> uuids, AnalysisContainer analysisContainer) throws Exception {
|
||||||
|
int islandCount = api.getIslandCount();
|
||||||
|
String islandWorldName = api.getIslandWorld().getName();
|
||||||
|
|
||||||
|
analysisContainer.addValue(getWithIcon("Island World", "map-o", "green"), islandWorldName);
|
||||||
|
analysisContainer.addValue(getWithIcon("Island Count", "street-view", "green"), islandCount);
|
||||||
|
|
||||||
|
Map<UUID, Serializable> islandLevels = new HashMap<>();
|
||||||
|
for (UUID uuid : uuids) {
|
||||||
|
islandLevels.put(uuid, api.hasIsland(uuid) ? api.getIslandLevel(uuid) : "-");
|
||||||
|
}
|
||||||
|
analysisContainer.addPlayerTableValues(getWithIcon("Island Level", "street-view"), islandLevels);
|
||||||
|
|
||||||
|
return analysisContainer;
|
||||||
|
}
|
||||||
|
}
|
@ -29,10 +29,7 @@ public class ASkyBlockHook extends Hook {
|
|||||||
public void hook() throws NoClassDefFoundError {
|
public void hook() throws NoClassDefFoundError {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
ASkyBlockAPI api = ASkyBlockAPI.getInstance();
|
ASkyBlockAPI api = ASkyBlockAPI.getInstance();
|
||||||
addPluginDataSource(new ASkyBlockIslandName(api));
|
addPluginDataSource(new ASkyBlockData(api));
|
||||||
addPluginDataSource(new ASkyBlockIslandLevel(api));
|
|
||||||
addPluginDataSource(new ASkyBlockIslandResets(api));
|
|
||||||
addPluginDataSource(new ASkyBlockIslands(api));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.askyblock;
|
|
||||||
|
|
||||||
import com.wasteofplastic.askyblock.ASkyBlockAPI;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for ASkyBlock-plugin.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.5.0
|
|
||||||
*/
|
|
||||||
public class ASkyBlockIslandLevel extends PluginData {
|
|
||||||
|
|
||||||
private final ASkyBlockAPI api;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
*
|
|
||||||
* @param aaAPI ASkyBlockAPI
|
|
||||||
*/
|
|
||||||
public ASkyBlockIslandLevel(ASkyBlockAPI aaAPI) {
|
|
||||||
super("ASkyBlock", "island_level", AnalysisType.INT_AVG);
|
|
||||||
this.api = aaAPI;
|
|
||||||
super.setAnalysisOnly(false);
|
|
||||||
super.setIcon("street-view");
|
|
||||||
super.setPrefix("Island Level: ");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
|
|
||||||
if (api.hasIsland(uuid)) {
|
|
||||||
int level = api.getIslandLevel(uuid);
|
|
||||||
return parseContainer(modifierPrefix, Integer.toString(level));
|
|
||||||
}
|
|
||||||
return parseContainer(modifierPrefix, "No Island");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
if (api.hasIsland(uuid)) {
|
|
||||||
return api.getIslandLevel(uuid);
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,46 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.askyblock;
|
|
||||||
|
|
||||||
import com.wasteofplastic.askyblock.ASkyBlockAPI;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for ASkyBlock-plugin.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.5.0
|
|
||||||
*/
|
|
||||||
public class ASkyBlockIslandName extends PluginData {
|
|
||||||
|
|
||||||
private final ASkyBlockAPI api;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
*
|
|
||||||
* @param aaAPI ASkyBlockAPI
|
|
||||||
*/
|
|
||||||
public ASkyBlockIslandName(ASkyBlockAPI aaAPI) {
|
|
||||||
super("ASkyBlock", "island_name");
|
|
||||||
this.api = aaAPI;
|
|
||||||
super.setIcon("street-view");
|
|
||||||
super.setPrefix("Island name: ");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
|
|
||||||
if (api.hasIsland(uuid)) {
|
|
||||||
return parseContainer(modifierPrefix, api.getIslandName(uuid).replace("§r", ""));
|
|
||||||
}
|
|
||||||
return parseContainer(modifierPrefix, "No Island");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
//Not used ever
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,43 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.askyblock;
|
|
||||||
|
|
||||||
import com.wasteofplastic.askyblock.ASkyBlockAPI;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for ASkyBlock-plugin.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.5.0
|
|
||||||
*/
|
|
||||||
public class ASkyBlockIslandResets extends PluginData {
|
|
||||||
|
|
||||||
private final ASkyBlockAPI api;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
*
|
|
||||||
* @param aaAPI ASkyBlockAPI
|
|
||||||
*/
|
|
||||||
public ASkyBlockIslandResets(ASkyBlockAPI aaAPI) {
|
|
||||||
super("ASkyBlock", "island_resets_left");
|
|
||||||
this.api = aaAPI;
|
|
||||||
super.setIcon("refresh");
|
|
||||||
super.setPrefix("Island Resets Left: ");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
|
|
||||||
return parseContainer(modifierPrefix, Integer.toString(api.getResetsLeft(uuid)));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
//Not used ever
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.askyblock;
|
|
||||||
|
|
||||||
import com.wasteofplastic.askyblock.ASkyBlockAPI;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for ASkyBlock-plugin.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.5.0
|
|
||||||
*/
|
|
||||||
public class ASkyBlockIslands extends PluginData {
|
|
||||||
|
|
||||||
private final ASkyBlockAPI api;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
*
|
|
||||||
* @param aaAPI ASkyBlockAPI
|
|
||||||
*/
|
|
||||||
public ASkyBlockIslands(ASkyBlockAPI aaAPI) {
|
|
||||||
super("ASkyBlock", "island_count", AnalysisType.HTML);
|
|
||||||
this.api = aaAPI;
|
|
||||||
super.setIcon("street-view");
|
|
||||||
super.setPrefix("Islands: ");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifierPrefix, UUID uuid) {
|
|
||||||
int count = api.getIslandCount();
|
|
||||||
if (count > 0) {
|
|
||||||
return parseContainer(modifierPrefix, Integer.toString(count));
|
|
||||||
}
|
|
||||||
return parseContainer(modifierPrefix, "0");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
//Not used ever
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,76 @@
|
|||||||
|
/*
|
||||||
|
* Licence is provided in the jar as license.yml also here:
|
||||||
|
* https://github.com/Rsl1122/Plan-PlayerAnalytics/blob/master/Plan/src/main/resources/license.yml
|
||||||
|
*/
|
||||||
|
package com.djrapitops.pluginbridge.plan.essentials;
|
||||||
|
|
||||||
|
import com.earth2me.essentials.Essentials;
|
||||||
|
import com.earth2me.essentials.User;
|
||||||
|
import com.earth2me.essentials.UserMap;
|
||||||
|
import main.java.com.djrapitops.plan.data.additional.*;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* //TODO Class Javadoc Comment
|
||||||
|
*
|
||||||
|
* @author Rsl1122
|
||||||
|
*/
|
||||||
|
public class EssentialsData extends PluginData {
|
||||||
|
|
||||||
|
private final Essentials essentials;
|
||||||
|
|
||||||
|
public EssentialsData(Essentials essentials) {
|
||||||
|
super(ContainerSize.THIRD, "Essentials");
|
||||||
|
super.setPluginIcon("flask");
|
||||||
|
super.setIconColor("deep-orange");
|
||||||
|
this.essentials = essentials;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InspectContainer getPlayerData(UUID uuid, InspectContainer inspectContainer) throws Exception {
|
||||||
|
if (essentials.getUserMap().userExists(uuid)) {
|
||||||
|
User user = essentials.getUser(uuid);
|
||||||
|
|
||||||
|
boolean jailed = user.isJailed();
|
||||||
|
boolean muted = user.isMuted();
|
||||||
|
|
||||||
|
inspectContainer.addValue(getWithIcon("Jailed", "ban", "deep-orange"), jailed ? "Yes" : "No");
|
||||||
|
inspectContainer.addValue(getWithIcon("Muted", "bell-slash-o", "deep-orange"), muted ? "Yes" : "No");
|
||||||
|
} else {
|
||||||
|
inspectContainer.addValue("No Essentials Data for this user", "-");
|
||||||
|
}
|
||||||
|
return inspectContainer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AnalysisContainer getServerData(Collection<UUID> uuids, AnalysisContainer analysisContainer) throws Exception {
|
||||||
|
UserMap userMap = essentials.getUserMap();
|
||||||
|
|
||||||
|
Map<UUID, String> jailed = new HashMap<>();
|
||||||
|
Map<UUID, String> muted = new HashMap<>();
|
||||||
|
for (UUID uuid : uuids) {
|
||||||
|
if (userMap.userExists(uuid)) {
|
||||||
|
User user = essentials.getUser(uuid);
|
||||||
|
jailed.put(uuid, user.isJailed() ? "Yes" : "No");
|
||||||
|
muted.put(uuid, user.isMuted() ? "Yes" : "No");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
analysisContainer.addPlayerTableValues(getWithIcon("Jailed", "ban"), jailed);
|
||||||
|
analysisContainer.addPlayerTableValues(getWithIcon("Muted", "bell-slash-o"), muted);
|
||||||
|
|
||||||
|
|
||||||
|
List<String> warpsList = new ArrayList<>(essentials.getWarps().getList());
|
||||||
|
if (!warpsList.isEmpty()) {
|
||||||
|
TableContainer warps = new TableContainer(getWithIcon("Warp", "map-marker"), getWithIcon("Command", "terminal"));
|
||||||
|
Collections.sort(warpsList);
|
||||||
|
for (String warp : warpsList) {
|
||||||
|
warps.addRow(warp, "/warp " + warp);
|
||||||
|
}
|
||||||
|
analysisContainer.addTable("WarpTable", warps);
|
||||||
|
}
|
||||||
|
|
||||||
|
return analysisContainer;
|
||||||
|
}
|
||||||
|
}
|
@ -31,9 +31,7 @@ public class EssentialsHook extends Hook {
|
|||||||
public void hook() throws NoClassDefFoundError {
|
public void hook() throws NoClassDefFoundError {
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
Essentials ess = getPlugin(Essentials.class);
|
Essentials ess = getPlugin(Essentials.class);
|
||||||
addPluginDataSource(new EssentialsJailed(ess));
|
addPluginDataSource(new EssentialsData(ess));
|
||||||
addPluginDataSource(new EssentialsMuted(ess));
|
|
||||||
addPluginDataSource(new EssentialsWarps(ess));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.essentials;
|
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
|
||||||
import com.earth2me.essentials.User;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.UUID;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for Essentials-plugin.
|
|
||||||
*
|
|
||||||
* Registered to the plugin by EssentialsHook
|
|
||||||
*
|
|
||||||
* Gives Jailed boolean value.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.1.0
|
|
||||||
* @see EssentialsHook
|
|
||||||
*/
|
|
||||||
public class EssentialsJailed extends PluginData {
|
|
||||||
|
|
||||||
private final Essentials essentials;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
*
|
|
||||||
* @param essentials Instance of Essentials plugin.
|
|
||||||
*/
|
|
||||||
public EssentialsJailed(Essentials essentials) {
|
|
||||||
super("Essentials", "jailed", AnalysisType.BOOLEAN_PERCENTAGE, AnalysisType.BOOLEAN_TOTAL);
|
|
||||||
this.essentials = essentials;
|
|
||||||
super.setIcon("ban");
|
|
||||||
super.setAnalysisOnly(false);
|
|
||||||
super.setPrefix("Jailed: ");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifier, UUID uuid) {
|
|
||||||
User user = essentials.getUser(uuid);
|
|
||||||
if (user != null) {
|
|
||||||
return parseContainer(modifier, user.isJailed() ? "Yes" : "No");
|
|
||||||
}
|
|
||||||
return parseContainer(modifier, "No");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
User user = essentials.getUser(uuid);
|
|
||||||
return user != null && user.isJailed();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.essentials;
|
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
|
||||||
import com.earth2me.essentials.User;
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.UUID;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for Essentials-plugin.
|
|
||||||
*
|
|
||||||
* Registered to the plugin by EssentialsHook
|
|
||||||
*
|
|
||||||
* Gives Muted boolean value.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.1.0
|
|
||||||
* @see EssentialsHook
|
|
||||||
*/
|
|
||||||
public class EssentialsMuted extends PluginData {
|
|
||||||
|
|
||||||
private final Essentials essentials;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
*
|
|
||||||
* @param essentials Instance of Essentials plugin.
|
|
||||||
*/
|
|
||||||
public EssentialsMuted(Essentials essentials) {
|
|
||||||
super("Essentials", "muted", AnalysisType.BOOLEAN_PERCENTAGE, AnalysisType.BOOLEAN_TOTAL);
|
|
||||||
this.essentials = essentials;
|
|
||||||
super.setIcon("bell-slash-o");
|
|
||||||
super.setAnalysisOnly(false);
|
|
||||||
super.setPrefix("Muted: ");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifier, UUID uuid) {
|
|
||||||
User user = essentials.getUser(uuid);
|
|
||||||
if (user != null) {
|
|
||||||
return parseContainer("", user.isMuted() ? "Yes" : "No");
|
|
||||||
}
|
|
||||||
return parseContainer(modifier, "No");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
User user = essentials.getUser(uuid);
|
|
||||||
return user != null && user.isMuted();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,70 +0,0 @@
|
|||||||
package com.djrapitops.pluginbridge.plan.essentials;
|
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
|
||||||
import com.earth2me.essentials.Warps;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.AnalysisType;
|
|
||||||
import main.java.com.djrapitops.plan.data.additional.PluginData;
|
|
||||||
import main.java.com.djrapitops.plan.utilities.html.Html;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PluginData class for Essentials-plugin.
|
|
||||||
*
|
|
||||||
* Registered to the plugin by EssentialsHook
|
|
||||||
*
|
|
||||||
* Gives a list of warps as a String value.
|
|
||||||
*
|
|
||||||
* @author Rsl1122
|
|
||||||
* @since 3.1.0
|
|
||||||
* @see EssentialsHook
|
|
||||||
*/
|
|
||||||
public class EssentialsWarps extends PluginData {
|
|
||||||
|
|
||||||
private final Essentials essentials;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class Constructor, sets the parameters of the PluginData object.
|
|
||||||
*
|
|
||||||
* @param essentials Instance of Essentials plugin.
|
|
||||||
*/
|
|
||||||
public EssentialsWarps(Essentials essentials) {
|
|
||||||
super("Essentials", "warps", AnalysisType.HTML);
|
|
||||||
this.essentials = essentials;
|
|
||||||
String warps = Html.FONT_AWESOME_ICON.parse("map-marker") + " Warps";
|
|
||||||
String command = Html.FONT_AWESOME_ICON.parse("fa-terminal") + " Command";
|
|
||||||
super.setPrefix(Html.TABLE_START_2.parse(warps, command));
|
|
||||||
super.setSuffix(Html.TABLE_END.parse());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getHtmlReplaceValue(String modifier, UUID uuid) {
|
|
||||||
Warps warps = essentials.getWarps();
|
|
||||||
if (!warps.isEmpty()) {
|
|
||||||
Collection<String> warpList = warps.getList();
|
|
||||||
|
|
||||||
return parseContainer("", getTableContents(new ArrayList<>(warpList)));
|
|
||||||
}
|
|
||||||
return parseContainer("", Html.TABLELINE_2.parse("No Warps.", ""));
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getTableContents(List<String> warps) {
|
|
||||||
Collections.sort(warps);
|
|
||||||
StringBuilder html = new StringBuilder();
|
|
||||||
if (warps.isEmpty()) {
|
|
||||||
html.append(Html.TABLELINE_4.parse("No Factions", "", "", ""));
|
|
||||||
} else {
|
|
||||||
for (String warp : warps) {
|
|
||||||
html.append(Html.TABLELINE_2.parse(warp, "/warp " + warp));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return html.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Serializable getValue(UUID uuid) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user