Log when someone completes a quest and fixed CompleteQuestEvent storing quests

This commit is contained in:
Teriuihi 2022-06-03 04:02:45 +02:00
parent 6a5261ff9a
commit 2cefdf8840
4 changed files with 30 additions and 25 deletions

View File

@ -59,7 +59,6 @@ public final class AQuest extends JavaPlugin {
getServer().getPluginManager().registerEvents(new EntityBucketed(), this);
getServer().getPluginManager().registerEvents(new EntityBreed(), this);
getServer().getPluginManager().registerEvents(new DonNotMessWithNPC(), this);
getServer().getPluginManager().registerEvents(new QuestComplete(), this);
getServer().getMessenger().registerOutgoingPluginChannel(this, "aquest:player-data");
getServer().getMessenger().registerIncomingPluginChannel(this, "aquest:player-data", new PluginMessageListener());
}

View File

@ -1,15 +0,0 @@
package com.alttd.altitudequests.events;
import com.alttd.altitudequests.objects.QuestCompleteEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
public class QuestComplete implements Listener {
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onQuestComplete(QuestCompleteEvent event) {
event.getPlayer().sendMiniMessage("<green>You completed a quest gj. - DEBUG</green>", null);
}
}

View File

@ -209,14 +209,29 @@ public abstract class Quest {
checkDone();
if (!isDone)
return;
//TODO add completed quest to database
saveDone(player);
saveDone();
QuestCompleteEvent event = new QuestCompleteEvent(player, this, true);
event.callEvent();
}
private void saveDone(Player player) {
private void saveDone() {
try {
String sql = "INSERT INTO quest_log " +
"(uuid, year, month, day) " +
"VALUES (?, ?, ?, ?)";
PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql);
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
statement.setString(1, uuid.toString());
statement.setInt(2, calendar.get(Calendar.YEAR));
statement.setInt(3, calendar.get(Calendar.MONTH));
statement.setInt(4, calendar.get(Calendar.DAY_OF_MONTH));
} catch (SQLException e) {
e.printStackTrace();
Logger.severe("Error while trying to create quest log table");
Logger.severe("Shutting down AltitudeQuests");
Bukkit.getPluginManager().disablePlugin(AQuest.getInstance());
}
}
public Variant getVariant() {

View File

@ -5,15 +5,17 @@ import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
public class QuestCompleteEvent extends Event{
public class QuestCompleteEvent extends Event {
private static final HandlerList handlers = new HandlerList();
final private Player player;
final private Quest quest;
final private Variant variant;
final private int amount;
final boolean daily;
public QuestCompleteEvent(Player player, Quest quest, boolean daily) {
this.player = player;
this.quest = quest;
this.variant = quest.getVariant();
this.amount = quest.getAmount();
this.daily = daily;
}
@ -21,8 +23,12 @@ public class QuestCompleteEvent extends Event{
return player;
}
public Quest getQuest() {
return quest;
public Variant getVariant() {
return variant;
}
public int getAmount() {
return amount;
}
public boolean isDaily() {