1.4.2 Possible bugfix, Advanced Achievements 4.0.3 Offline player support

Added "* 1.0" to some calculations in analysis just to make sure
returned values are doubles.

Added AA 4.0.3 Offline player support and analysis feature.
Ready for release once AA 4.0.3 is released.
This commit is contained in:
Rsl1122 2016-12-09 23:03:51 +02:00
parent c7fc4d93bd
commit a3af8202e5
2 changed files with 40 additions and 12 deletions

View File

@ -16,10 +16,34 @@ public class AdvancedAchievementsHook implements Hook {
private Plan plugin; private Plan plugin;
private AdvancedAchievements aAPlugin; private AdvancedAchievements aAPlugin;
private int totalAchievements; private int totalAchievements;
private boolean usingUUID;
public AdvancedAchievementsHook(Plan plugin) throws Exception, NoClassDefFoundError { public AdvancedAchievementsHook(Plan plugin) throws Exception, NoClassDefFoundError {
this.plugin = plugin; this.plugin = plugin;
this.aAPlugin = getPlugin(AdvancedAchievements.class); this.aAPlugin = getPlugin(AdvancedAchievements.class);
String[] aAVersion = aAPlugin.getDescription().getVersion().split(".");
try {
double versionNumber = Double.parseDouble(aAVersion[0] + "." + aAVersion[1] + aAVersion[2]);
if (versionNumber >= 4.03) {
this.usingUUID = true;
} else {
this.usingUUID = false;
plugin.logError("Advanced Achievements 4.0.3 or above required for Offline players");
}
} catch (Exception e) {
try {
double versionNumber = Double.parseDouble(aAVersion[0] + "." + aAVersion[1]);
if (versionNumber >= 4.03) {
this.usingUUID = true;
} else {
this.usingUUID = false;
plugin.logError("Advanced Achievements 4.0.3 or above required for Offline players");
}
} catch (Exception e2) {
plugin.logToFile("AAHOOK\nError getting version number.\n" + e2);
}
}
for (NormalAchievements category : NormalAchievements.values()) { for (NormalAchievements category : NormalAchievements.values()) {
String categoryName = category.toString(); String categoryName = category.toString();
if (aAPlugin.getDisabledCategorySet().contains(categoryName)) { if (aAPlugin.getDisabledCategorySet().contains(categoryName)) {
@ -46,15 +70,19 @@ public class AdvancedAchievementsHook implements Hook {
@Override @Override
public HashMap<String, String> getData(String player) throws Exception { public HashMap<String, String> getData(String player) throws Exception {
HashMap<String, String> data = new HashMap<>(); HashMap<String, String> data = new HashMap<>();
UUID uuid = UUIDFetcher.getUUIDOf(player); if (totalAchievements > 0) {
Player p = getPlayer(player); UUID uuid = UUIDFetcher.getUUIDOf(player);
if (uuid != null) {
p = getPlayer(uuid);
}
if (p != null) {
try { try {
if (totalAchievements > 0) { if (this.usingUUID) {
data.put("AAC-ACHIEVEMENTS", aAPlugin.getDb().getPlayerAchievementsAmount(p) + " / " + totalAchievements); Player p = getPlayer(player);
if (uuid != null) {
p = getPlayer(uuid);
}
if (p != null) {
data.put("AAC-ACHIEVEMENTS", aAPlugin.getDb().getPlayerAchievementsAmount(p) + " / " + totalAchievements);
}
} else {
data.put("AAC-ACHIEVEMENTS", aAPlugin.getDb().getPlayerAchievementsAmount(uuid.toString()) + " / " + totalAchievements);
} }
} catch (Exception e) { } catch (Exception e) {
plugin.logToFile("AAHOOK-GetData\nFailed to get data\n" + e + "\nfor: " + player); plugin.logToFile("AAHOOK-GetData\nFailed to get data\n" + e + "\nfor: " + player);

View File

@ -92,7 +92,7 @@ public class DataUtils {
} }
} }
String[] numbers = {"ESS-HEALTH", "ESS-XP LEVEL", "FAC-POWER", "FAC-POWER PER HOUR", String[] numbers = {"AAC-ACHIEVEMENTS","ESS-HEALTH", "ESS-XP LEVEL", "FAC-POWER", "FAC-POWER PER HOUR",
"FAC-POWER PER DEATH", "SVO-VOTES", "ONT-TOTAL VOTES", "ONT-TOTAL REFERRED", "ECO-BALANCE"}; "FAC-POWER PER DEATH", "SVO-VOTES", "ONT-TOTAL VOTES", "ONT-TOTAL REFERRED", "ECO-BALANCE"};
List<String> numberKeys = new ArrayList<>(); List<String> numberKeys = new ArrayList<>();
numberKeys.addAll(Arrays.asList(numbers)); numberKeys.addAll(Arrays.asList(numbers));
@ -125,7 +125,7 @@ public class DataUtils {
errorTypes.add("" + e); errorTypes.add("" + e);
} }
} }
analyzedData.put(dataKey, "" + (sum / playerData.size())); analyzedData.put(dataKey, "" + (sum * 1.0 / playerData.size()));
} else if (boolKeys.contains(dataKey)) { } else if (boolKeys.contains(dataKey)) {
int amount = 0; int amount = 0;
@ -139,7 +139,7 @@ public class DataUtils {
errorTypes.add("" + e); errorTypes.add("" + e);
} }
} }
analyzedData.put(dataKey, "" + ((amount / playerData.size()) * 100) + "%"); analyzedData.put(dataKey, "" + ((amount * 1.0 / playerData.size()) * 100) + "%");
} else if (timeKeys.contains(dataKey)) { } else if (timeKeys.contains(dataKey)) {
Long time = Long.parseLong("0"); Long time = Long.parseLong("0");
for (String dataPoint : playerDataLists.get(dataKey)) { for (String dataPoint : playerDataLists.get(dataKey)) {
@ -150,7 +150,7 @@ public class DataUtils {
errorTypes.add("" + e); errorTypes.add("" + e);
} }
} }
analyzedData.put(dataKey, "" + (time / playerData.size())); analyzedData.put(dataKey, "" + (time * 1.0 / playerData.size()));
} }
} }
if (errors > 0) { if (errors > 0) {