Added a way to open books outside of the interact with entity event
open book after turning in item moved more things from MineQuest to just Quest Made Variant and made MineQuestObject extend Variant Made quests reset if they aren't from (irl) today Made quests reset when a new (irl) day starts Basically made everything work
This commit is contained in:
@@ -24,9 +24,6 @@ public class LogoutEvent implements Listener {
|
||||
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");
|
||||
|
||||
@@ -5,6 +5,7 @@ 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.alttd.altitudequests.util.Utilities;
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -70,7 +71,7 @@ public class PluginMessageListener implements org.bukkit.plugin.messaging.Plugin
|
||||
PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql);
|
||||
statement.setString(1, uuid.toString());
|
||||
ResultSet resultSet = statement.executeQuery();
|
||||
if (resultSet.next()) {
|
||||
if (resultSet.next() && resultSet.getInt("year_day") < Utilities.getYearDay()) {
|
||||
Quest.loadDailyQuest(
|
||||
resultSet.getString("quest"),
|
||||
resultSet.getString("quest_variant"),
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
package com.alttd.altitudequests.events;
|
||||
|
||||
import com.alttd.altitudequests.AQuest;
|
||||
import com.alttd.altitudequests.config.Config;
|
||||
import com.alttd.altitudequests.config.LocalConfig;
|
||||
import com.alttd.altitudequests.objects.Quest;
|
||||
import net.kyori.adventure.inventory.Book;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
import com.alttd.altitudequests.util.BookOpener;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@@ -17,15 +11,11 @@ import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class TalkToQuest implements Listener {
|
||||
|
||||
private static final MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
|
||||
private static final Set<UUID> inProcess = new HashSet<>();
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
@@ -42,38 +32,11 @@ public class TalkToQuest implements Listener {
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
player.openBook(getBook(event));
|
||||
BookOpener.openBook(player);
|
||||
inProcess.remove(uniqueId);
|
||||
}
|
||||
}.runTaskAsynchronously(AQuest.getInstance());
|
||||
//TODO make it so everything can be done with commands and just don't let them tab complete and do them through the book instead
|
||||
//TODO in config allow a multitude of events to be prepared and randomly select from them at certain times of day?
|
||||
}
|
||||
|
||||
private Book getBook (PlayerInteractEntityEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
|
||||
return Book.builder()
|
||||
.author(miniMessage.deserialize(Config.QUEST_BOOK_AUTHOR))
|
||||
.title(miniMessage.deserialize(Config.QUEST_BOOK_TITLE))
|
||||
.pages(getPages(player))
|
||||
.build();
|
||||
}
|
||||
|
||||
private static final Component error = MiniMessage.miniMessage().deserialize("<red>Error retrieving quest data</red>");
|
||||
private List<Component> getPages(Player player) {
|
||||
Quest dailyQuest = Quest.getDailyQuest(player.getUniqueId());
|
||||
if (dailyQuest == null)
|
||||
return List.of(error);
|
||||
TagResolver tagResolver = TagResolver.resolver(
|
||||
TagResolver.resolver(Placeholder.component("player", player.name())),
|
||||
TagResolver.resolver(Placeholder.parsed("br", "\n")),
|
||||
dailyQuest.getTagResolvers()
|
||||
);
|
||||
//TODO add weekly quest?
|
||||
List<Component> pages = dailyQuest.getPages().stream()
|
||||
.map(page -> miniMessage.deserialize(page, tagResolver))
|
||||
.collect(Collectors.toList());
|
||||
return (pages);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user