Save and load quests from the database

This commit is contained in:
2022-06-01 23:17:45 +02:00
parent 063fc4061e
commit e9bdb6a70d
6 changed files with 94 additions and 28 deletions
@@ -10,6 +10,7 @@ import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.UUID;
@@ -18,14 +19,22 @@ public class LogoutEvent implements Listener {
public void onPlayerQuit(PlayerQuitEvent event) {
UUID uuid = event.getPlayer().getUniqueId();
if (Config.DEBUG)
Logger.info("Syncing %", event.getPlayer().getName());
Quest.unloadUser(uuid);
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("try-unlock");
out.writeUTF(uuid.toString());
Bukkit.getServer().sendPluginMessage(AQuest.getInstance(),
"aquest:player-data",
out.toByteArray());
new BukkitRunnable() {
@Override
public void run() {
if (Config.DEBUG)
Logger.info("Syncing %", event.getPlayer().getName());
Quest dailyQuest = Quest.getDailyQuest(uuid);
if (dailyQuest != null)
dailyQuest.save();
Quest.unloadUser(uuid);
ByteArrayDataOutput out = ByteStreams.newDataOutput();
out.writeUTF("try-unlock");
out.writeUTF(uuid.toString());
Bukkit.getServer().sendPluginMessage(AQuest.getInstance(),
"aquest:player-data",
out.toByteArray());
}
}.runTaskAsynchronously(AQuest.getInstance());
}
}
@@ -2,6 +2,7 @@ package com.alttd.altitudequests.events;
import com.alttd.altitudequests.AQuest;
import com.alttd.altitudequests.config.Config;
import com.alttd.altitudequests.database.Database;
import com.alttd.altitudequests.objects.Quest;
import com.alttd.altitudequests.util.Logger;
import com.google.common.io.ByteArrayDataInput;
@@ -11,6 +12,9 @@ import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
public class PluginMessageListener implements org.bukkit.plugin.messaging.PluginMessageListener {
@@ -61,9 +65,27 @@ public class PluginMessageListener implements org.bukkit.plugin.messaging.Plugin
new BukkitRunnable() {
@Override
public void run() {
//TODO load user from database
//TODO if no quest in database create one
System.out.println("creating quest");
String sql = "SELECT * FROM generic_quest_progress WHERE uuid = ?";
try {
PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql);
statement.setString(1, uuid.toString());
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
Quest.loadDailyQuest(
resultSet.getString("quest"),
resultSet.getString("quest_variant"),
resultSet.getInt("step_1_progress"),
resultSet.getInt("step_2_progress"),
uuid);
if (Config.DEBUG)
Logger.info("Loading daily quest for %", uuid.toString());
return;
}
} catch (SQLException exception) {
exception.printStackTrace();
}
if (Config.DEBUG)
Logger.info("Creating new daily quest for %", uuid.toString());
Quest.createDailyQuest(Bukkit.getPlayer(uuid));
}
}.runTaskAsynchronously(AQuest.getInstance());