aboutsummaryrefslogtreecommitdiffstats
path: root/bukkit/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'bukkit/src/main')
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java34
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java2
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerJoinListener.java41
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/listener/PlayerLeaveListener.java4
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/MySqlStorageProvider.java11
-rw-r--r--bukkit/src/main/java/com/leonardobishop/quests/bukkit/storage/YamlStorageProvider.java9
-rw-r--r--bukkit/src/main/resources/resources/bukkit/config.yml5
7 files changed, 72 insertions, 34 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 eeb359bc..5fce8a31 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java
@@ -64,6 +64,7 @@ import com.leonardobishop.quests.bukkit.util.Messages;
import com.leonardobishop.quests.common.config.ConfigProblem;
import com.leonardobishop.quests.common.config.ConfigProblemDescriptions;
import com.leonardobishop.quests.common.config.QuestsConfig;
+import com.leonardobishop.quests.common.enums.PluginMessagingChannels;
import com.leonardobishop.quests.common.logger.QuestsLogger;
import com.leonardobishop.quests.common.player.QPlayerManager;
import com.leonardobishop.quests.common.plugin.Quests;
@@ -82,6 +83,7 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
+import org.bukkit.plugin.messaging.PluginMessageListener;
import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.NotNull;
@@ -214,7 +216,7 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
MetricsLite metrics = new MetricsLite(this, 3443);
if (metrics.isEnabled()) {
- this.getQuestsLogger().info("Metrics started. This can be disabled at /plugins/bStats/config.yml.");
+ this.questsLogger.info("Metrics started. This can be disabled at /plugins/bStats/config.yml.");
}
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
@@ -247,6 +249,31 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
super.getServer().getPluginManager().registerEvents(menuController, this);
super.getServer().getPluginManager().registerEvents(new PlayerLeaveListener(this), this);
+ // TODO https://github.com/LMBishop/Quests/issues/180
+// this.getServer().getMessenger().registerOutgoingPluginChannel(this, PluginMessagingChannels.QUESTS_LOCKS_CHANNEL);
+// this.getServer().getMessenger().registerIncomingPluginChannel(this, PluginMessagingChannels.QUESTS_LOCKS_CHANNEL, new PluginMessageListener() {
+// @Override
+// public void onPluginMessageReceived(@NotNull String channel, @NotNull Player player, @NotNull byte[] message) {
+// System.out.println("A PLUGIN MESSAGE HAS BEEN RECEIVED");
+// }
+// });
+//
+// this.questsLogger.warning("#########################################################");
+// this.questsLogger.warning("WARNING WARNING WARNING WARNING WARNING WARNING WARNING");
+// this.questsLogger.warning("");
+// this.questsLogger.warning("You have BungeeCord synchronisation enabled, however");
+// this.questsLogger.warning("Quests does not appear to be present on the proxy server.");
+// this.questsLogger.warning("");
+// this.questsLogger.warning("Player data will not be loaded if the BungeeCord plugin");
+// this.questsLogger.warning("is missing!");
+// this.questsLogger.warning("");
+// this.questsLogger.warning("You must install Quests onto your BungeeCord server, in");
+// this.questsLogger.warning("addition to this installation, in order for synchronisation");
+// this.questsLogger.warning("to work!");
+// this.questsLogger.warning("");
+// this.questsLogger.warning("For more info: "); //TODO write wiki page
+// this.questsLogger.warning("#########################################################");
+
// register task types after the server has fully started
Bukkit.getScheduler().runTask(this, () -> {
taskTypeManager.registerTaskType(new MiningTaskType(this));
@@ -317,6 +344,11 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests {
}
@Override
+ public void onDisable() {
+ this.getServer().getMessenger().unregisterOutgoingPluginChannel(this);
+ }
+
+ @Override
public void reloadQuests() {
if (this.reloadBaseConfiguration()) {
BukkitQuestsLoader questsLoader = new BukkitQuestsLoader(this);
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java
index 37a388fb..03a13ea1 100644
--- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java
+++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/command/QuestsCommand.java
@@ -6,6 +6,7 @@ import com.leonardobishop.quests.bukkit.util.Messages;
import com.leonardobishop.quests.common.config.ConfigProblem;
import com.leonardobishop.quests.common.enums.QuestStartResult;
import com.leonardobishop.quests.common.player.QPlayer;
+import com.leonardobishop.quests.common.player.QPlayerManager;
import com.leonardobishop.quests.common.player.questprogressfile.QuestProgressFile;
import com.leonardobishop.quests.common.quest.Category;
import com.leonardobishop.quests.common.quest.Quest;
@@ -41,7 +42,6 @@ public class QuestsCommand implements TabExecutor {
this.plugin = plugin;
}
- @SuppressWarnings("deprecation")
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (plugin.getTaskTypeManager().areRegistrationsAccepted()) {
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 2fe15860..103c4fcb 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
@@ -1,13 +1,15 @@
package com.leonardobishop.quests.bukkit.listener;
+import com.google.common.io.ByteArrayDataOutput;
+import com.google.common.io.ByteStreams;
import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin;
import com.leonardobishop.quests.bukkit.util.Messages;
+import com.leonardobishop.quests.common.enums.PluginMessagingChannels;
import com.leonardobishop.quests.common.player.QPlayer;
import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
-import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import java.util.UUID;
@@ -20,15 +22,8 @@ public class PlayerJoinListener implements Listener {
this.plugin = plugin;
}
- @EventHandler(priority = EventPriority.MONITOR)
- public void onAsyncJoin(AsyncPlayerPreLoginEvent event) {
- plugin.getPlayerManager().loadPlayer(event.getUniqueId());
- }
-
@EventHandler
- public void onEvent(PlayerJoinEvent event) {
- UUID playerUuid = event.getPlayer().getUniqueId();
- plugin.getPlayerManager().loadPlayer(playerUuid);
+ public void onJoin(PlayerJoinEvent event) {
if (plugin.getDescription().getVersion().contains("beta") && event.getPlayer().hasPermission("quests.admin")) {
event.getPlayer().sendMessage(Messages.BETA_REMINDER.getMessage());
}
@@ -41,11 +36,29 @@ public class PlayerJoinListener implements Listener {
Bukkit.getScheduler().runTaskLater(this.plugin, () -> event.getPlayer().sendMessage(updateMessage), 50L);
}
- QPlayer qPlayer = plugin.getPlayerManager().getPlayer(playerUuid);
- if (qPlayer == null) return;
+ Player player = event.getPlayer();
+
+// Bukkit.getScheduler().runTaskLater(plugin, () -> {
+// if (!player.isOnline()) return;
+//
+// ByteArrayDataOutput out = ByteStreams.newDataOutput();
+// out.writeUTF("acquireLock");
+// out.writeUTF(player.getUniqueId().toString());
+// player.sendPluginMessage(plugin, PluginMessagingChannels.QUESTS_LOCKS_CHANNEL, out.toByteArray());
+// }, 20L);
+
+
+ plugin.getScheduler().doAsync(() -> {
+ plugin.getPlayerManager().loadPlayer(player.getUniqueId());
+
+ plugin.getScheduler().doSync(() -> {
+ QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId());
+ if (qPlayer == null) return;
- // run a full check to check for any missed quest completions
- plugin.getQuestCompleter().queueFullCheck(qPlayer.getQuestProgressFile());
+ // run a full check to check for any missed quest completions
+ plugin.getQuestCompleter().queueFullCheck(qPlayer.getQuestProgressFile());
+ });
+ });
}
}
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..db8bb698 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
@@ -16,9 +16,7 @@ public class PlayerLeaveListener implements Listener {
@EventHandler
public void onEvent(PlayerQuitEvent event) {
- QPlayer qPlayer = plugin.getPlayerManager().getPlayer(event.getPlayer().getUniqueId());
- if (qPlayer == null) return;
- plugin.getPlayerManager().removePlayer(qPlayer.getPlayerUUID());
+ plugin.getPlayerManager().removePlayer(event.getPlayer().getUniqueId());
}
}
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 fd473af6..5482c63a 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
@@ -126,7 +126,7 @@ public class MySqlStorageProvider implements StorageProvider {
@Override
public QuestProgressFile loadProgressFile(UUID uuid) {
- if (fault) return null;
+ if (fault) throw new RuntimeException("storage provider encountered a fault during initialization and cannot be used");
QuestProgressFile questProgressFile = new QuestProgressFile(uuid, plugin);
try (Connection connection = hikari.getConnection()) {
plugin.getQuestsLogger().debug("Querying player " + uuid);
@@ -197,16 +197,14 @@ public class MySqlStorageProvider implements StorageProvider {
questProgressFile.addQuestProgress(questProgress);
}
} catch (SQLException e) {
- plugin.getQuestsLogger().severe("Failed to load player: " + uuid + "!");
- e.printStackTrace();
- return null;
+ throw new RuntimeException(e);
}
return questProgressFile;
}
@Override
public void saveProgressFile(UUID uuid, QuestProgressFile questProgressFile) {
- if (fault) return;
+ if (fault) throw new RuntimeException("storage provider encountered a fault during initialization and cannot be used");
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))) {
@@ -269,8 +267,7 @@ public class MySqlStorageProvider implements StorageProvider {
writeTaskProgress.executeBatch();
}
} catch (SQLException e) {
- plugin.getQuestsLogger().severe("Failed to save player: " + uuid + "!");
- e.printStackTrace();
+ throw new RuntimeException(e);
}
}
}
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 75e271f9..0a272abc 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
@@ -79,10 +79,6 @@ public class YamlStorageProvider implements StorageProvider {
plugin.getQuestsLogger().debug("Player " + uuid + " does not have a quest progress file.");
}
}
- } catch (Exception ex) {
- plugin.getQuestsLogger().severe("Failed to load player: " + uuid + "! This WILL cause errors.");
- ex.printStackTrace();
- // fuck
} finally {
lock.unlock();
}
@@ -104,7 +100,7 @@ public class YamlStorageProvider implements StorageProvider {
try {
file.createNewFile();
} catch (IOException e) {
- e.printStackTrace();
+ throw new RuntimeException(e);
}
}
@@ -128,8 +124,7 @@ public class YamlStorageProvider implements StorageProvider {
data.save(file);
plugin.getQuestsLogger().debug("Write of player " + uuid + " to disk complete.");
} catch (IOException e) {
- plugin.getQuestsLogger().debug("Failed to write player: " + uuid + "!.");
- e.printStackTrace();
+ throw new RuntimeException(e);
}
} finally {
lock.unlock();
diff --git a/bukkit/src/main/resources/resources/bukkit/config.yml b/bukkit/src/main/resources/resources/bukkit/config.yml
index f7084505..7e007ba2 100644
--- a/bukkit/src/main/resources/resources/bukkit/config.yml
+++ b/bukkit/src/main/resources/resources/bukkit/config.yml
@@ -237,8 +237,11 @@ options:
# Storage options - please see the following: https://github.com/LMBishop/Quests/wiki/Storage-Providers
storage:
# Either 'yaml' (flatfile) or 'mysql' (network)
- # Please read the following before using MySQL https://github.com/LMBishop/Quests/wiki/Storage-Providers#network
+ # You must read the following before using MySQL https://github.com/LMBishop/Quests/wiki/Storage-Providers#network
provider: "yaml"
+ # Please see the following wiki page before changing these options:
+ synchronisation:
+ bungeecord: false
# The following is only applicable for database storage providers (e.g. mysql)
database-settings:
network: