From 647cead4c195a0bb136b4489e9efc7451bf47646 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Fri, 3 Jun 2022 02:50:44 +0200 Subject: [PATCH] Added get reward command Store if a player obtained their reward already --- .../commands/CommandManager.java | 3 +- .../subcommands/CommandChangeQuest.java | 2 +- .../subcommands/CommandGetReward.java | 67 +++++++++++++++++++ .../commands/subcommands/CommandHelp.java | 1 + .../commands/subcommands/CommandSetQuest.java | 2 +- .../commands/subcommands/CommandTurnIn.java | 4 +- .../altitudequests/config/MessagesConfig.java | 4 ++ .../altitudequests/config/QuestsConfig.java | 11 +++ .../altitudequests/database/Database.java | 1 + .../events/PluginMessageListener.java | 19 +++--- .../alttd/altitudequests/objects/Quest.java | 22 ++++-- .../objects/quests/BreedMobsQuest.java | 32 +++++---- .../objects/quests/CollectDropsQuest.java | 31 +++++---- .../objects/quests/KillMobsQuest.java | 32 +++++---- .../objects/quests/MineQuest.java | 32 +++++---- .../alttd/altitudequests/util/Utilities.java | 5 ++ 16 files changed, 202 insertions(+), 66 deletions(-) create mode 100644 src/main/java/com/alttd/altitudequests/commands/subcommands/CommandGetReward.java diff --git a/src/main/java/com/alttd/altitudequests/commands/CommandManager.java b/src/main/java/com/alttd/altitudequests/commands/CommandManager.java index 293a4ea..23e1125 100644 --- a/src/main/java/com/alttd/altitudequests/commands/CommandManager.java +++ b/src/main/java/com/alttd/altitudequests/commands/CommandManager.java @@ -34,7 +34,8 @@ public class CommandManager implements CommandExecutor, TabExecutor { new CommandCreateScruff(), new CommandChangeQuest(), new CommandTurnIn(), - new CommandSetQuest()); + new CommandSetQuest(), + new CommandGetReward()); } @Override diff --git a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandChangeQuest.java b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandChangeQuest.java index 2c169d1..1aff172 100644 --- a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandChangeQuest.java +++ b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandChangeQuest.java @@ -27,7 +27,7 @@ public class CommandChangeQuest extends SubCommand { @Override public String getHelpMessage() { - return "\b"; + return null; } @Override diff --git a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandGetReward.java b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandGetReward.java new file mode 100644 index 0000000..a3c5e89 --- /dev/null +++ b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandGetReward.java @@ -0,0 +1,67 @@ +package com.alttd.altitudequests.commands.subcommands; + +import com.alttd.altitudequests.commands.SubCommand; +import com.alttd.altitudequests.config.Config; +import com.alttd.altitudequests.config.LocalConfig; +import com.alttd.altitudequests.config.MessagesConfig; +import com.alttd.altitudequests.objects.Quest; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import java.util.ArrayList; +import java.util.List; + +public class CommandGetReward extends SubCommand { + + @Override + public boolean onCommand(CommandSender commandSender, String[] args) { + if (args.length != 1) + return true; + if (!(commandSender instanceof Player player)) { + commandSender.sendMiniMessage(MessagesConfig.NO_CONSOLE, null); + return true; + } + Quest dailyQuest = Quest.getDailyQuest(player.getUniqueId()); + if (dailyQuest == null) { + player.sendMiniMessage("You have no active quests?", null); + return true; + } + if (player.getNearbyEntities(5, 5, 5).stream() + .noneMatch(entity -> entity.getUniqueId().equals(LocalConfig.activeNPC))) { + player.sendMiniMessage(MessagesConfig.TOO_FAR_FROM_NPC, Placeholder.component("npc", MiniMessage.miniMessage().deserialize(Config.NPC_NAME))); + return true; + } + + if (dailyQuest.isRewardReceived()) { + player.sendMiniMessage(MessagesConfig.REWARD_ALREADY_RECEIVED, null); + return true; + } + for (String command : dailyQuest.getRewardCommand()) + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), command.replaceAll("", commandSender.getName())); + player.sendMiniMessage(MessagesConfig.REWARD_SENT, null); + return true; + } + + @Override + public String getName() { + return "getreward"; + } + + @Override + public List getTabComplete(CommandSender commandSender, String[] args) { + return new ArrayList<>(); + } + + @Override + public String getHelpMessage() { + return null; + } + + @Override + public boolean shouldTabComplete() { + return false; + } +} diff --git a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandHelp.java b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandHelp.java index 1acd043..7540635 100644 --- a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandHelp.java +++ b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandHelp.java @@ -22,6 +22,7 @@ public class CommandHelp extends SubCommand { public boolean onCommand(CommandSender commandSender, String[] args) { commandSender.sendMiniMessage(MessagesConfig.HELP_MESSAGE_WRAPPER.replaceAll("", commandManager .getSubCommands().stream() + .filter(SubCommand::shouldTabComplete) .filter(subCommand -> commandSender.hasPermission(subCommand.getPermission())) .map(SubCommand::getHelpMessage) .collect(Collectors.joining("\n"))), null); diff --git a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandSetQuest.java b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandSetQuest.java index 157186a..841ceb3 100644 --- a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandSetQuest.java +++ b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandSetQuest.java @@ -26,7 +26,7 @@ public class CommandSetQuest extends SubCommand { commandSender.sendMiniMessage(getHelpMessage(), null); return true; } - if (!Quest.loadDailyQuest(args[2], args[3], 0, 0, player.getUniqueId())) + if (!Quest.loadDailyQuest(args[2], args[3], 0, 0, player.getUniqueId(), false)) commandSender.sendMiniMessage("Unable to create quest of variant .", TagResolver.resolver(Placeholder.parsed("quest", args[2]), Placeholder.parsed("variant", args[3]))); diff --git a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandTurnIn.java b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandTurnIn.java index 8d6525c..35cbcea 100644 --- a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandTurnIn.java +++ b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandTurnIn.java @@ -24,7 +24,7 @@ public class CommandTurnIn extends SubCommand { return true; } Quest dailyQuest = Quest.getDailyQuest(player.getUniqueId()); - if (dailyQuest == null) { + if (dailyQuest == null || dailyQuest.isDone()) { player.sendMiniMessage(MessagesConfig.DAILY_ALREADY_DONE, null); return true; } @@ -50,7 +50,7 @@ public class CommandTurnIn extends SubCommand { @Override public String getHelpMessage() { - return "\b"; + return null; } @Override diff --git a/src/main/java/com/alttd/altitudequests/config/MessagesConfig.java b/src/main/java/com/alttd/altitudequests/config/MessagesConfig.java index 5083974..96d846b 100644 --- a/src/main/java/com/alttd/altitudequests/config/MessagesConfig.java +++ b/src/main/java/com/alttd/altitudequests/config/MessagesConfig.java @@ -34,10 +34,14 @@ public class MessagesConfig extends AbstractConfig{ public static String TOO_FAR_FROM_NPC = "You are too far from "; public static String DAILY_ALREADY_DONE = "You already completed your daily quest"; public static String RESETTING_QUESTS = "[Mascot] Scruff: Thank you everyone that completed their daily quest! I will be handing out new ones now so come visit me at /spawn!"; + public static String REWARD_ALREADY_RECEIVED = "You already collected this reward"; + public static String REWARD_SENT = "Thank you for completing the quest! Your reward has been sent!"; private static void loadMessages() { TOO_FAR_FROM_NPC = config.getString("messages.too-far-from-npc", TOO_FAR_FROM_NPC); DAILY_ALREADY_DONE = config.getString("messages.daily-already-done", DAILY_ALREADY_DONE); RESETTING_QUESTS = config.getString("messages.resetting-quests", RESETTING_QUESTS); + REWARD_ALREADY_RECEIVED = config.getString("messages.reward-already-received", REWARD_ALREADY_RECEIVED); + REWARD_SENT = config.getString("messages.reward-send", REWARD_SENT); } public static String NO_PERMISSION = "You do not have permission to do that."; diff --git a/src/main/java/com/alttd/altitudequests/config/QuestsConfig.java b/src/main/java/com/alttd/altitudequests/config/QuestsConfig.java index 9d3a2aa..ad2aa9d 100644 --- a/src/main/java/com/alttd/altitudequests/config/QuestsConfig.java +++ b/src/main/java/com/alttd/altitudequests/config/QuestsConfig.java @@ -32,6 +32,7 @@ public class QuestsConfig extends AbstractConfig { public static String MINE_STEP_1 = "Mined"; public static String MINE_STEP_2 = "Turned in"; public static String MINE_TURN_IN = "Click here to turn in your "; + public static List MINE_COMMANDS = List.of("broadcast Finished their daily quest!"); private static void loadMineQuests() { MINE_QUESTS.clear(); @@ -59,6 +60,7 @@ public class QuestsConfig extends AbstractConfig { MINE_STEP_1 = config.getString("mining.step-1", MINE_STEP_1); MINE_STEP_2 = config.getString("mining.step-2", MINE_STEP_2); MINE_TURN_IN = config.getString("mining.turn-in", MINE_TURN_IN); + MINE_COMMANDS = config.getStringList("mining.commands", MINE_COMMANDS); } public static List KILL_MOB_QUEST = new ArrayList<>(); @@ -66,6 +68,8 @@ public class QuestsConfig extends AbstractConfig { public static String KILL_MOB_STEP_1 = "Killed"; public static String KILL_MOB_STEP_2 = "Confirmed"; public static String KILL_MOB_TURN_IN = "Click here to confirm the killed s"; + public static List KILL_MOB_COMMANDS = List.of("broadcast Finished their daily quest!"); + private static void loadKillMobQuests() { KILL_MOB_QUEST.clear(); ConfigurationSection configurationSection = config.getConfigurationSection("kill_mobs.possible_tasks"); @@ -92,6 +96,7 @@ public class QuestsConfig extends AbstractConfig { KILL_MOB_STEP_1 = config.getString("kill_mobs.step-1", KILL_MOB_STEP_1); KILL_MOB_STEP_2 = config.getString("kill_mobs.step-2", KILL_MOB_STEP_2); KILL_MOB_TURN_IN = config.getString("kill_mobs.turn-in", KILL_MOB_TURN_IN); + KILL_MOB_COMMANDS = config.getStringList("kill_mobs.commands", KILL_MOB_COMMANDS); } public static List COLLECT_DROPS_QUEST = new ArrayList<>(); @@ -99,6 +104,8 @@ public class QuestsConfig extends AbstractConfig { public static String COLLECT_DROPS_STEP_1 = "Obtained"; public static String COLLECT_DROPS_STEP_2 = "Turned in"; public static String COLLECT_DROPS_TURN_IN = "Click here to turn in your "; + public static List COLLECT_DROPS_COMMANDS = List.of("broadcast Finished their daily quest!"); + private static void loadCollectQuests() { COLLECT_DROPS_QUEST.clear(); ConfigurationSection configurationSection = config.getConfigurationSection("collect_drops.possible_tasks"); @@ -125,6 +132,7 @@ public class QuestsConfig extends AbstractConfig { COLLECT_DROPS_STEP_1 = config.getString("collect_drops.step-1", COLLECT_DROPS_STEP_1); COLLECT_DROPS_STEP_2 = config.getString("collect_drops.step-2", COLLECT_DROPS_STEP_2); COLLECT_DROPS_TURN_IN = config.getString("collect_drops.turn-in", COLLECT_DROPS_TURN_IN); + COLLECT_DROPS_COMMANDS = config.getStringList("collect_drops.commands", COLLECT_DROPS_COMMANDS); } public static List BREED_MOB_QUEST = new ArrayList<>(); @@ -132,6 +140,8 @@ public class QuestsConfig extends AbstractConfig { public static String BREED_STEP_1 = "Bred"; public static String BREED_STEP_2 = "Confirmed"; public static String BREED_TURN_IN = "Click here to confirm the baby s"; + public static List BREED_MOB_COMMANDS = List.of("broadcast Finished their daily quest!"); + private static void loadBreedMobQuests() { BREED_MOB_QUEST.clear(); ConfigurationSection configurationSection = config.getConfigurationSection("breed_mobs.possible_tasks"); @@ -158,5 +168,6 @@ public class QuestsConfig extends AbstractConfig { BREED_STEP_1 = config.getString("breed_mobs.step-1", BREED_STEP_1); BREED_STEP_2 = config.getString("breed_mobs.step-2", BREED_STEP_2); BREED_TURN_IN = config.getString("breed_mobs.turn-in", BREED_TURN_IN); + BREED_MOB_COMMANDS = config.getStringList("breed_mobs.commands", BREED_MOB_COMMANDS); } } diff --git a/src/main/java/com/alttd/altitudequests/database/Database.java b/src/main/java/com/alttd/altitudequests/database/Database.java index aba546d..6fef8c9 100644 --- a/src/main/java/com/alttd/altitudequests/database/Database.java +++ b/src/main/java/com/alttd/altitudequests/database/Database.java @@ -97,6 +97,7 @@ public class Database { "quest_variant VARCHAR(36) NOT NULL, " + "step_1_progress INT NOT NULL, " + "step_2_progress INT NOT NULL, " + + "reward_received BIT(1) NOT NULL, " + "PRIMARY KEY (UUID)" + ")"; getDatabase().getConnection().prepareStatement(sql).executeUpdate(); diff --git a/src/main/java/com/alttd/altitudequests/events/PluginMessageListener.java b/src/main/java/com/alttd/altitudequests/events/PluginMessageListener.java index b82db3a..6502ce0 100644 --- a/src/main/java/com/alttd/altitudequests/events/PluginMessageListener.java +++ b/src/main/java/com/alttd/altitudequests/events/PluginMessageListener.java @@ -35,7 +35,7 @@ public class PluginMessageListener implements org.bukkit.plugin.messaging.Plugin } UUID uuid = UUID.fromString(in.readUTF()); if (Config.DEBUG) - Logger.warning("Received positive log result for %, loading user", uuid.toString()); + Logger.info("Received positive log result for %, loading user", uuid.toString()); loadUser(uuid); } case "queue-lock-failed" -> Logger.warning("Encountered uuid that was locked and had a lock queued: %, lock is from %", in.readUTF(), in.readUTF()); @@ -53,7 +53,7 @@ public class PluginMessageListener implements org.bukkit.plugin.messaging.Plugin } UUID uuid = UUID.fromString(in.readUTF()); if (Config.DEBUG) - Logger.warning("Received positive log result for %, loading user", uuid.toString()); + Logger.info("Received positive log result for %, loading user", uuid.toString()); loadUser(uuid); } case "check-lock-result" -> { @@ -71,16 +71,19 @@ 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() && resultSet.getInt("year_day") < Utilities.getYearDay()) { - Quest.loadDailyQuest( + if (resultSet.next() && resultSet.getInt("year_day") == Utilities.getYearDay()) { + if (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; + uuid, + resultSet.getInt("reward_received") == 1)) { + if (Config.DEBUG) + Logger.info("Loading daily quest for %", uuid.toString()); + return; + } else + Logger.warning("Unable to load quest for %, creating new quest...", uuid.toString()); } } catch (SQLException exception) { exception.printStackTrace(); diff --git a/src/main/java/com/alttd/altitudequests/objects/Quest.java b/src/main/java/com/alttd/altitudequests/objects/Quest.java index 9512a9a..43ec364 100644 --- a/src/main/java/com/alttd/altitudequests/objects/Quest.java +++ b/src/main/java/com/alttd/altitudequests/objects/Quest.java @@ -41,13 +41,15 @@ public abstract class Quest { private int step2; private final Variant variant; private boolean isDone; + private boolean rewardReceived; - public Quest(UUID uuid, int step1, int step2, Variant variant) { + public Quest(UUID uuid, int step1, int step2, Variant variant, boolean rewardReceived) { this.uuid = uuid; this.step1 = step1; this.step2 = step2; this.variant = variant; - this.isDone = false; + this.isDone = rewardReceived; + this.rewardReceived = rewardReceived; } public static void createDailyQuest(Player player) { @@ -112,7 +114,7 @@ public abstract class Quest { } } - public static boolean loadDailyQuest(String quest, String quest_variant, int step_1_progress, int step_2_progress, UUID uuid) { + public static boolean loadDailyQuest(String quest, String quest_variant, int step_1_progress, int step_2_progress, UUID uuid, boolean turnedIn) { Optional> any = possibleQuests.stream() .filter(q -> q.getSimpleName().equals(quest)) .findAny(); @@ -123,8 +125,8 @@ public abstract class Quest { Class aClass = any.get(); Constructor constructor; try { - constructor = aClass.getConstructor(UUID.class, int.class, int.class, String.class); - Quest quest1 = constructor.newInstance(uuid, step_1_progress, step_2_progress, quest_variant); + constructor = aClass.getConstructor(UUID.class, int.class, int.class, String.class, boolean.class); + Quest quest1 = constructor.newInstance(uuid, step_1_progress, step_2_progress, quest_variant, turnedIn); dailyQuests.put(uuid, quest1); } catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) { e.printStackTrace(); @@ -158,6 +160,8 @@ public abstract class Quest { public abstract Component getDisplayName(); + public abstract List getRewardCommand(); + public List getQuestPages() { return variant.getQuestPages(); } @@ -214,6 +218,14 @@ public abstract class Quest { return isDone; } + public boolean isRewardReceived() { + return rewardReceived; + } + + public void setRewardReceived(boolean rewardReceived) { + this.rewardReceived = rewardReceived; + } + public int getMaxToTurnIn() { return Math.min(variant.getAmount() - getStep2(), getStep1() - getStep2()); } diff --git a/src/main/java/com/alttd/altitudequests/objects/quests/BreedMobsQuest.java b/src/main/java/com/alttd/altitudequests/objects/quests/BreedMobsQuest.java index 4d60c04..11672f5 100644 --- a/src/main/java/com/alttd/altitudequests/objects/quests/BreedMobsQuest.java +++ b/src/main/java/com/alttd/altitudequests/objects/quests/BreedMobsQuest.java @@ -16,6 +16,7 @@ import org.bukkit.entity.Player; import java.sql.PreparedStatement; import java.sql.SQLException; +import java.util.List; import java.util.UUID; public class BreedMobsQuest extends Quest { @@ -24,7 +25,7 @@ public class BreedMobsQuest extends Quest { public BreedMobsQuest(UUID uuid) { super(uuid, 0, 0, - QuestsConfig.BREED_MOB_QUEST.get(Utilities.randomOr0(QuestsConfig.BREED_MOB_QUEST.size() - 1))); + QuestsConfig.BREED_MOB_QUEST.get(Utilities.randomOr0(QuestsConfig.BREED_MOB_QUEST.size() - 1)), false); if (getVariant() instanceof BreedMobsQuestObject breedMobsQuestObject) this.breedMobsQuestObject = breedMobsQuestObject; else @@ -35,10 +36,10 @@ public class BreedMobsQuest extends Quest { } } - public BreedMobsQuest(UUID uuid, int step1, int step2, String variant) { + public BreedMobsQuest(UUID uuid, int step1, int step2, String variant, boolean rewardReceived) { super(uuid, step1, step2, QuestsConfig.BREED_MOB_QUEST.stream() .filter(object -> variant.equals(object.getInternalName())) - .findAny().orElse(null)); + .findAny().orElse(null), rewardReceived); if (getVariant() instanceof BreedMobsQuestObject breedMobsQuestObject) this.breedMobsQuestObject = breedMobsQuestObject; else @@ -53,10 +54,10 @@ public class BreedMobsQuest extends Quest { @Override public void save() { String sql = "INSERT INTO generic_quest_progress " + - "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress) " + - "VALUES (?, ?, ?, ?, ?, ?) " + + "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress, reward_received) " + + "VALUES (?, ?, ?, ?, ?, ?, ?) " + "ON DUPLICATE KEY UPDATE " + - "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?"; + "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, reward_received = ?"; try { PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql); int yearDay = Utilities.getYearDay(); @@ -68,11 +69,13 @@ public class BreedMobsQuest extends Quest { statement.setString(4, breedMobsQuestObject.getInternalName()); statement.setInt(5, getStep1()); statement.setInt(6, getStep2()); - statement.setString(7, this.getClass().getSimpleName()); - statement.setString(8, breedMobsQuestObject.getInternalName()); - statement.setInt(9, getStep1()); - statement.setInt(10, getStep2()); - statement.setInt(11, yearDay); + statement.setInt(7, isRewardReceived() ? 1 : 0); + statement.setString(8, this.getClass().getSimpleName()); + statement.setString(9, breedMobsQuestObject.getInternalName()); + statement.setInt(10, getStep1()); + statement.setInt(11, getStep2()); + statement.setInt(12, yearDay); + statement.setInt(13, isRewardReceived() ? 1 : 0); statement.execute(); } catch (SQLException exception) { exception.printStackTrace(); @@ -82,7 +85,7 @@ public class BreedMobsQuest extends Quest { @Override public TagResolver getTagResolvers() { TagResolver resolver = TagResolver.resolver( - Placeholder.unparsed("mob", breedMobsQuestObject.getEntityType().name()), + Placeholder.unparsed("mob", Utilities.formatName(breedMobsQuestObject.getEntityType().name())), Placeholder.parsed("step_1_progress", getStep1() == breedMobsQuestObject.getAmount() ? "" + getStep1() + "" : "" + getStep1() + ""), Placeholder.parsed("step_1_total", String.valueOf(breedMobsQuestObject.getAmount())), @@ -115,6 +118,11 @@ public class BreedMobsQuest extends Quest { return MiniMessage.miniMessage().deserialize(QuestsConfig.BREED_MOB_QUEST_NAME); } + @Override + public List getRewardCommand() { + return QuestsConfig.BREED_MOB_COMMANDS; + } + public void breed(LivingEntity entity) { if (isDone() || !entity.getType().equals(breedMobsQuestObject.getEntityType())) return; diff --git a/src/main/java/com/alttd/altitudequests/objects/quests/CollectDropsQuest.java b/src/main/java/com/alttd/altitudequests/objects/quests/CollectDropsQuest.java index a35c6eb..0eaf15c 100644 --- a/src/main/java/com/alttd/altitudequests/objects/quests/CollectDropsQuest.java +++ b/src/main/java/com/alttd/altitudequests/objects/quests/CollectDropsQuest.java @@ -28,7 +28,7 @@ public class CollectDropsQuest extends Quest { public CollectDropsQuest(UUID uuid) { super(uuid, 0, 0, - QuestsConfig.COLLECT_DROPS_QUEST.get(Utilities.randomOr0(QuestsConfig.COLLECT_DROPS_QUEST.size() - 1))); + QuestsConfig.COLLECT_DROPS_QUEST.get(Utilities.randomOr0(QuestsConfig.COLLECT_DROPS_QUEST.size() - 1)), false); if (getVariant() instanceof CollectDropsQuestObject collectDropsQuestObject) this.collectDropsQuestObject = collectDropsQuestObject; else @@ -39,10 +39,10 @@ public class CollectDropsQuest extends Quest { } } - public CollectDropsQuest(UUID uuid, int step1, int step2, String variant) { + public CollectDropsQuest(UUID uuid, int step1, int step2, String variant, boolean rewardReceived) { super(uuid, step1, step2, QuestsConfig.COLLECT_DROPS_QUEST.stream() .filter(object -> variant.equals(object.getInternalName())) - .findAny().orElse(null)); + .findAny().orElse(null), rewardReceived); if (getVariant() instanceof CollectDropsQuestObject collectDropsQuestObject) this.collectDropsQuestObject = collectDropsQuestObject; else @@ -57,10 +57,10 @@ public class CollectDropsQuest extends Quest { @Override public void save() { String sql = "INSERT INTO generic_quest_progress " + - "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress) " + - "VALUES (?, ?, ?, ?, ?, ?) " + + "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress, reward_received) " + + "VALUES (?, ?, ?, ?, ?, ?, ?) " + "ON DUPLICATE KEY UPDATE " + - "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?"; + "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, reward_received = ?"; try { PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql); int yearDay = Utilities.getYearDay(); @@ -72,11 +72,13 @@ public class CollectDropsQuest extends Quest { statement.setString(4, collectDropsQuestObject.getInternalName()); statement.setInt(5, getStep1()); statement.setInt(6, getStep2()); - statement.setString(7, this.getClass().getSimpleName()); - statement.setString(8, collectDropsQuestObject.getInternalName()); - statement.setInt(9, getStep1()); - statement.setInt(10, getStep2()); - statement.setInt(11, yearDay); + statement.setInt(7, isRewardReceived() ? 1 : 0); + statement.setString(8, this.getClass().getSimpleName()); + statement.setString(9, collectDropsQuestObject.getInternalName()); + statement.setInt(10, getStep1()); + statement.setInt(11, getStep2()); + statement.setInt(12, yearDay); + statement.setInt(13, isRewardReceived() ? 1 : 0); statement.execute(); } catch (SQLException exception) { exception.printStackTrace(); @@ -86,7 +88,7 @@ public class CollectDropsQuest extends Quest { @Override public TagResolver getTagResolvers() { TagResolver resolver = TagResolver.resolver( - Placeholder.unparsed("item", collectDropsQuestObject.getMaterial().name()), + Placeholder.unparsed("item", Utilities.formatName(collectDropsQuestObject.getMaterial().name())), Placeholder.parsed("step_1_progress", getStep1() == collectDropsQuestObject.getAmount() ? "" + getStep1() + "" : "" + getStep1() + ""), Placeholder.parsed("step_1_total", String.valueOf(collectDropsQuestObject.getAmount())), @@ -140,6 +142,11 @@ public class CollectDropsQuest extends Quest { return MiniMessage.miniMessage().deserialize(QuestsConfig.COLLECT_DROPS_QUEST_NAME); } + @Override + public List getRewardCommand() { + return QuestsConfig.COLLECT_DROPS_COMMANDS; + } + public void collectDrops(List drops) { if (isDone()) return; diff --git a/src/main/java/com/alttd/altitudequests/objects/quests/KillMobsQuest.java b/src/main/java/com/alttd/altitudequests/objects/quests/KillMobsQuest.java index 4de6a7b..950371c 100644 --- a/src/main/java/com/alttd/altitudequests/objects/quests/KillMobsQuest.java +++ b/src/main/java/com/alttd/altitudequests/objects/quests/KillMobsQuest.java @@ -16,6 +16,7 @@ import org.bukkit.entity.Player; import java.sql.PreparedStatement; import java.sql.SQLException; +import java.util.List; import java.util.UUID; public class KillMobsQuest extends Quest { @@ -24,7 +25,7 @@ public class KillMobsQuest extends Quest { public KillMobsQuest(UUID uuid) { super(uuid, 0, 0, - QuestsConfig.KILL_MOB_QUEST.get(Utilities.randomOr0(QuestsConfig.KILL_MOB_QUEST.size() - 1))); + QuestsConfig.KILL_MOB_QUEST.get(Utilities.randomOr0(QuestsConfig.KILL_MOB_QUEST.size() - 1)), false); if (getVariant() instanceof KillMobsQuestObject killMobsQuestObject) this.killMobsQuestObject = killMobsQuestObject; else @@ -35,10 +36,10 @@ public class KillMobsQuest extends Quest { } } - public KillMobsQuest(UUID uuid, int step1, int step2, String variant) { + public KillMobsQuest(UUID uuid, int step1, int step2, String variant, boolean rewardReceived) { super(uuid, step1, step2, QuestsConfig.KILL_MOB_QUEST.stream() .filter(object -> variant.equals(object.getInternalName())) - .findAny().orElse(null)); + .findAny().orElse(null), rewardReceived); if (getVariant() instanceof KillMobsQuestObject killMobsQuestObject) this.killMobsQuestObject = killMobsQuestObject; else @@ -53,10 +54,10 @@ public class KillMobsQuest extends Quest { @Override public void save() { String sql = "INSERT INTO generic_quest_progress " + - "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress) " + - "VALUES (?, ?, ?, ?, ?, ?) " + + "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress, reward_received) " + + "VALUES (?, ?, ?, ?, ?, ?, ?) " + "ON DUPLICATE KEY UPDATE " + - "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?"; + "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, reward_received = ?"; try { PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql); int yearDay = Utilities.getYearDay(); @@ -68,11 +69,13 @@ public class KillMobsQuest extends Quest { statement.setString(4, killMobsQuestObject.getInternalName()); statement.setInt(5, getStep1()); statement.setInt(6, getStep2()); - statement.setString(7, this.getClass().getSimpleName()); - statement.setString(8, killMobsQuestObject.getInternalName()); - statement.setInt(9, getStep1()); - statement.setInt(10, getStep2()); - statement.setInt(11, yearDay); + statement.setInt(7, isRewardReceived() ? 1 : 0); + statement.setString(8, this.getClass().getSimpleName()); + statement.setString(9, killMobsQuestObject.getInternalName()); + statement.setInt(10, getStep1()); + statement.setInt(11, getStep2()); + statement.setInt(12, yearDay); + statement.setInt(13, isRewardReceived() ? 1 : 0); statement.execute(); } catch (SQLException exception) { exception.printStackTrace(); @@ -82,7 +85,7 @@ public class KillMobsQuest extends Quest { @Override public TagResolver getTagResolvers() { TagResolver resolver = TagResolver.resolver( - Placeholder.unparsed("mob", killMobsQuestObject.getEntityType().name()), + Placeholder.unparsed("mob", Utilities.formatName(killMobsQuestObject.getEntityType().name())), Placeholder.parsed("step_1_progress", getStep1() == killMobsQuestObject.getAmount() ? "" + getStep1() + "" : "" + getStep1() + ""), Placeholder.parsed("step_1_total", String.valueOf(killMobsQuestObject.getAmount())), @@ -115,6 +118,11 @@ public class KillMobsQuest extends Quest { return MiniMessage.miniMessage().deserialize(QuestsConfig.KILL_MOB_QUEST_NAME); } + @Override + public List getRewardCommand() { + return QuestsConfig.KILL_MOB_COMMANDS; + } + public void kill(LivingEntity entity) { if (isDone() || !entity.getType().equals(killMobsQuestObject.getEntityType()) || !entity.hasAI()) return; diff --git a/src/main/java/com/alttd/altitudequests/objects/quests/MineQuest.java b/src/main/java/com/alttd/altitudequests/objects/quests/MineQuest.java index 9780245..b0fe6a7 100644 --- a/src/main/java/com/alttd/altitudequests/objects/quests/MineQuest.java +++ b/src/main/java/com/alttd/altitudequests/objects/quests/MineQuest.java @@ -25,7 +25,7 @@ public class MineQuest extends Quest { public MineQuest(UUID uuid) { super(uuid, 0, 0, - QuestsConfig.MINE_QUESTS.get(Utilities.randomOr0(QuestsConfig.MINE_QUESTS.size() - 1))); + QuestsConfig.MINE_QUESTS.get(Utilities.randomOr0(QuestsConfig.MINE_QUESTS.size() - 1)), false); if (getVariant() instanceof MineQuestObject mineQuestObject) this.mineQuestObject = mineQuestObject; else @@ -36,10 +36,11 @@ public class MineQuest extends Quest { } } - public MineQuest(UUID uuid, int mined, int turnedIn, String variant) { + public MineQuest(UUID uuid, int mined, int turnedIn, String variant, boolean rewardReceived) { super(uuid, mined, turnedIn, QuestsConfig.MINE_QUESTS.stream() .filter(object -> variant.equals(object.getInternalName())) - .findAny().orElse(null)); + .findAny().orElse(null), + rewardReceived); if (getVariant() instanceof MineQuestObject mineQuestObject) this.mineQuestObject = mineQuestObject; else @@ -54,10 +55,10 @@ public class MineQuest extends Quest { @Override public void save() { String sql = "INSERT INTO generic_quest_progress " + - "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress) " + - "VALUES (?, ?, ?, ?, ?, ?) " + + "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress, reward_received) " + + "VALUES (?, ?, ?, ?, ?, ?, ?) " + "ON DUPLICATE KEY UPDATE " + - "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?"; + "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, reward_received = ?"; try { PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql); int yearDay = Utilities.getYearDay(); @@ -69,11 +70,13 @@ public class MineQuest extends Quest { statement.setString(4, mineQuestObject.getInternalName()); statement.setInt(5, getStep1()); statement.setInt(6, getStep2()); - statement.setString(7, this.getClass().getSimpleName()); - statement.setString(8, mineQuestObject.getInternalName()); - statement.setInt(9, getStep1()); - statement.setInt(10, getStep2()); - statement.setInt(11, yearDay); + statement.setInt(7, isRewardReceived() ? 1 : 0); + statement.setString(8, this.getClass().getSimpleName()); + statement.setString(9, mineQuestObject.getInternalName()); + statement.setInt(10, getStep1()); + statement.setInt(11, getStep2()); + statement.setInt(12, yearDay); + statement.setInt(13, isRewardReceived() ? 1 : 0); statement.execute(); } catch (SQLException exception) { exception.printStackTrace(); @@ -83,7 +86,7 @@ public class MineQuest extends Quest { @Override public TagResolver getTagResolvers() { TagResolver resolver = TagResolver.resolver( - Placeholder.unparsed("block", mineQuestObject.getMaterial().name()), + Placeholder.unparsed("block", Utilities.formatName(mineQuestObject.getMaterial().name())), Placeholder.parsed("step_1_progress", getStep1() == mineQuestObject.getAmount() ? "" + getStep1() + "" : "" + getStep1() + ""), Placeholder.parsed("step_1_total", String.valueOf(mineQuestObject.getAmount())), @@ -136,6 +139,11 @@ public class MineQuest extends Quest { return MiniMessage.miniMessage().deserialize(QuestsConfig.MINE_QUEST_NAME); } + @Override + public List getRewardCommand() { + return QuestsConfig.MINE_COMMANDS; + } + public void mine(Block block) { if (isDone() || !block.getType().equals(mineQuestObject.getMaterial())) return; diff --git a/src/main/java/com/alttd/altitudequests/util/Utilities.java b/src/main/java/com/alttd/altitudequests/util/Utilities.java index d284f7a..bf542fe 100644 --- a/src/main/java/com/alttd/altitudequests/util/Utilities.java +++ b/src/main/java/com/alttd/altitudequests/util/Utilities.java @@ -21,4 +21,9 @@ public class Utilities { calendar.setTime(new Date()); return (calendar.get(Calendar.YEAR) * 1000) + calendar.get(Calendar.DAY_OF_YEAR); } + + public static String formatName(String name) { + name = name.toLowerCase().replaceAll("_", " "); + return name.replace(name.charAt(0), Character.toUpperCase(name.charAt(0))); + } }