aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main/java/com/leonardobishop
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit/src/main/java/com/leonardobishop')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugCommandHandler.java52
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java1
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerLeaveListener.java3
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/MySqlStorageProvider.java8
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/YamlStorageProvider.java7
6 files changed, 49 insertions, 26 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
index bb29e1f5..8cf42b37 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
@@ -182,7 +182,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
}
try {
- questsLogger.info("Initialising storage provider '" + storageProvider.getName());
+ questsLogger.info("Initialising storage provider '" + storageProvider.getName() + "'");
storageProvider.init();
} catch (Exception e) {
questsLogger.severe("An error occurred initialising the storage provider.");
@@ -464,7 +464,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
if (validConfiguration) {
int loggingLevel = questsConfig.getInt("options.verbose-logging-level", 2);
questsLogger.setServerLoggingLevel(QuestsLogger.LoggingLevel.fromNumber(loggingLevel));
- boolean logHistoryEnabled = questsConfig.getBoolean("options.log-history", false);
+ boolean logHistoryEnabled = questsConfig.getBoolean("options.record-log-history", true);
logHistory.setEnabled(logHistoryEnabled);
switch (questsConfig.getString("quest-mode.mode", "normal").toLowerCase()) {
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugCommandHandler.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugCommandHandler.java
index 9e222327..408b0d06 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugCommandHandler.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/AdminDebugCommandHandler.java
@@ -28,6 +28,7 @@ import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.FileAttribute;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.function.Function;
@@ -127,7 +128,13 @@ public class AdminDebugCommandHandler implements CommandHandler {
lines.add("");
lines.add("Number of items: " + plugin.getQuestItemRegistry().getAllItems().size());
lines.add("");
- //TODO this
+ for (QuestItem questItem : plugin.getQuestItemRegistry().getAllItems()) {
+ Map<String, Object> values = getFieldValues(questItem.getClass(), questItem);
+ values.putAll(getFieldValues(questItem.getClass().getSuperclass(), questItem));
+ printMap(lines, 0, "Item " + questItem.getId() + " (" + questItem.getClass().getSimpleName() + ")", values);
+ lines.add("");
+ }
+
lines.add("################################");
lines.add("# Quests #");
@@ -136,7 +143,7 @@ public class AdminDebugCommandHandler implements CommandHandler {
lines.add("Number of quests: " + plugin.getQuestManager().getQuests().size());
lines.add("");
for (Quest quest : plugin.getQuestManager().getQuests().values()) {
- Map<String, Object> questValues = getFieldValues(quest, "tasks", "tasksByType");
+ Map<String, Object> questValues = getFieldValues(quest.getClass(), quest, "tasks", "tasksByType");
try {
Field tasksField = quest.getClass().getDeclaredField("tasks");
tasksField.setAccessible(true);
@@ -144,7 +151,7 @@ public class AdminDebugCommandHandler implements CommandHandler {
Map<String, Object> tasksValues = new HashMap<>();
for (Map.Entry<String, Task> taskEntry : tasksMap.entrySet()) {
Task task = taskEntry.getValue();
- tasksValues.put(task.getId(), getFieldValues(task));
+ tasksValues.put(task.getId(), getFieldValues(task.getClass(), task));
}
questValues.put("tasks", tasksValues);
} catch (NoSuchFieldException | IllegalAccessException e) {
@@ -167,7 +174,7 @@ public class AdminDebugCommandHandler implements CommandHandler {
for (QPlayer qPlayer : plugin.getPlayerManager().getQPlayers()) {
lines.add("QPlayer " + qPlayer.getPlayerUUID() + ":");
QPlayerPreferences preferences = qPlayer.getPlayerPreferences();
- printMap(lines, 1, "Preferences", getFieldValues(preferences));
+ printMap(lines, 1, "Preferences", getFieldValues(preferences.getClass(), preferences));
QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
try {
@@ -177,7 +184,7 @@ public class AdminDebugCommandHandler implements CommandHandler {
Map<String, Object> questProgressValues = new LinkedHashMap<>();
for (Map.Entry<String, QuestProgress> entry : questProgressMap.entrySet()) {
QuestProgress questProgress = entry.getValue();
- Map<String, Object> questProgressValue = getFieldValues(questProgress, "plugin", "taskProgress");
+ Map<String, Object> questProgressValue = getFieldValues(questProgress.getClass(), questProgress, "plugin", "taskProgress");
Field taskProgressField = questProgress.getClass().getDeclaredField("taskProgress");
taskProgressField.setAccessible(true);
@@ -185,7 +192,7 @@ public class AdminDebugCommandHandler implements CommandHandler {
Map<String, Object> taskProgressValues = new LinkedHashMap<>();
for (Map.Entry<String, TaskProgress> taskEntry : taskProgressMap.entrySet()) {
TaskProgress taskProgress = taskEntry.getValue();
- taskProgressValues.put(taskEntry.getKey(), getFieldValues(taskProgress, "plugin", "linkedQuestProgress"));
+ taskProgressValues.put(taskEntry.getKey(), getFieldValues(taskProgress.getClass(), taskProgress, "plugin", "linkedQuestProgress"));
}
questProgressValue.put("taskProgress", taskProgressValues);
@@ -200,16 +207,29 @@ public class AdminDebugCommandHandler implements CommandHandler {
lines.add("");
}
- lines.add("################################");
- lines.add("# Log History #");
- lines.add("################################");
- lines.add("");
- for (LogHistory.LogEntry line : plugin.getLogHistory().getEntries()) {
- lines.add(String.format("[%s/%s/%s] %s", line.getTime(), line.getType().toString(), line.getThread(), line.getEntry()));
+ if (plugin.getLogHistory().isEnabled()) {
+ lines.add("################################");
+ lines.add("# Log History #");
+ lines.add("################################");
+ lines.add("");
+ int timeMaxLength = 1;
+ int typeMaxLength = 1;
+ int threadMaxLength = 1;
+ for (LogHistory.LogEntry line : plugin.getLogHistory().getEntries()) {
+ timeMaxLength = Math.max(timeMaxLength, String.valueOf(line.getTime()).length());
+ typeMaxLength = Math.max(typeMaxLength, line.getType().toString().length());
+ threadMaxLength = Math.max(threadMaxLength, line.getThread().length());
+ }
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ for (LogHistory.LogEntry line : plugin.getLogHistory().getEntries()) {
+ lines.add(String.format("%-" + timeMaxLength + "s %-" + typeMaxLength + "s %-" + threadMaxLength + "s | %s",
+ dateFormat.format(new Date(line.getTime())), line.getType().toString(), line.getThread(), line.getEntry()));
+ }
}
List<String> errors = new ArrayList<>();
lines.add(0, "");
+ lines.add(0, "Log history: " + plugin.getLogHistory().isEnabled());
printList(errors, 0, "Errors generating report", this.errors, String::valueOf);
lines.addAll(0, errors);
lines.add(0, "Time taken: " + (System.currentTimeMillis() - start) + "ms");
@@ -233,18 +253,18 @@ public class AdminDebugCommandHandler implements CommandHandler {
}
}
- private Map<String, Object> getFieldValues(Object object, String... excludeFields) {
- Field[] fields = object.getClass().getDeclaredFields();
+ private Map<String, Object> getFieldValues(Class<?> clazz, Object object, String... excludeFields) {
+ Field[] fields = clazz.getDeclaredFields();
Map<String, Object> values = new LinkedHashMap<>();
for (Field field : fields) {
if (Arrays.asList(excludeFields).contains(field.getName())) {
continue;
}
- field.setAccessible(true);
try {
+ field.setAccessible(true);
values.put(field.getName(), field.get(object));
} catch (IllegalAccessException e) {
- error("Failed to get field value for " + object.getClass().getSimpleName() + "." + field.getName() + ": " + e.getClass().getSimpleName() + "(" + e.getMessage() + ")");
+ error("Failed to get field value for " + clazz.getSimpleName() + "." + field.getName() + ": " + e.getClass().getSimpleName() + "(" + e.getMessage() + ")");
e.printStackTrace();
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
index a6af86e1..dbe27ffc 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java
@@ -32,6 +32,7 @@ public class PlayerJoinListener implements Listener {
}
final Player player = event.getPlayer();
+ plugin.getQuestsLogger().debug("PlayerJoinListener: " + player.getUniqueId() + " (" + player.getName() + ")");
plugin.getServer().getScheduler().runTaskLater(plugin, () -> {
if (!player.isOnline()) return;
plugin.getPlayerManager().loadPlayer(player.getUniqueId()).thenAccept(qPlayer -> {
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerLeaveListener.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerLeaveListener.java
index 1f41344a..d5c94011 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerLeaveListener.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerLeaveListener.java
@@ -2,6 +2,7 @@ package com.leonardobishop.quests.bukkit.listener;
import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
import com.leonardobishop.quests.common.player.QPlayer;
+import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
@@ -18,6 +19,8 @@ public class PlayerLeaveListener implements Listener {
public void onEvent(PlayerQuitEvent event) {
QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId());
if (qPlayer == null) return;
+ Player player = event.getPlayer();
+ plugin.getQuestsLogger().debug("PlayerLeaveListener: " + player.getUniqueId() + " (" + player.getName() + ")");
plugin.getPlayerManager().removePlayer(qPlayer.getPlayerUUID());
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/MySqlStorageProvider.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/MySqlStorageProvider.java
index 3d5f6ea1..3f737aff 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/MySqlStorageProvider.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/MySqlStorageProvider.java
@@ -228,7 +228,6 @@ public class MySqlStorageProvider implements StorageProvider {
questProgressFile.addQuestProgress(questProgress);
}
} catch (SQLException e) {
- plugin.getQuestsLogger().severe("Failed to load player: " + uuid + "!");
e.printStackTrace();
return null;
}
@@ -236,11 +235,11 @@ public class MySqlStorageProvider implements StorageProvider {
}
@Override
- public void saveProgressFile(@NotNull UUID uuid, @NotNull QuestProgressFile questProgressFile) {
+ public boolean saveProgressFile(@NotNull UUID uuid, @NotNull QuestProgressFile questProgressFile) {
Objects.requireNonNull(uuid, "uuid cannot be null");
Objects.requireNonNull(questProgressFile, "questProgressFile cannot be null");
- if (fault) return;
+ if (fault) return false;
try (Connection connection = hikari.getConnection()) {
try (PreparedStatement writeQuestProgress = connection.prepareStatement(this.statementProcessor.apply(WRITE_PLAYER_QUEST_PROGRESS));
PreparedStatement writeTaskProgress = connection.prepareStatement(this.statementProcessor.apply(WRITE_PLAYER_TASK_PROGRESS))) {
@@ -304,9 +303,10 @@ public class MySqlStorageProvider implements StorageProvider {
writeQuestProgress.executeBatch();
writeTaskProgress.executeBatch();
}
+ return true;
} catch (SQLException e) {
- plugin.getQuestsLogger().severe("Failed to save player: " + uuid + "!");
e.printStackTrace();
+ return false;
}
}
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/YamlStorageProvider.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/YamlStorageProvider.java
index 4d758145..70cacd7a 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/YamlStorageProvider.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/YamlStorageProvider.java
@@ -97,7 +97,6 @@ public class YamlStorageProvider implements StorageProvider {
}
}
} catch (Exception ex) {
- plugin.getQuestsLogger().severe("Failed to load player: " + uuid + "!");
ex.printStackTrace();
return null;
} finally {
@@ -107,7 +106,7 @@ public class YamlStorageProvider implements StorageProvider {
return questProgressFile;
}
- public void saveProgressFile(@NotNull UUID uuid, @NotNull QuestProgressFile questProgressFile) {
+ public boolean saveProgressFile(@NotNull UUID uuid, @NotNull QuestProgressFile questProgressFile) {
Objects.requireNonNull(uuid, "uuid cannot be null");
Objects.requireNonNull(questProgressFile, "questProgressFile cannot be null");
@@ -147,10 +146,10 @@ public class YamlStorageProvider implements StorageProvider {
plugin.getQuestsLogger().debug("Writing player " + uuid + " to disk.");
try {
data.save(file);
- plugin.getQuestsLogger().debug("Write of player " + uuid + " to disk complete.");
+ return true;
} catch (IOException e) {
- plugin.getQuestsLogger().debug("Failed to write player: " + uuid + "!.");
e.printStackTrace();
+ return false;
}
} finally {
lock.unlock();