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 extends Quest> aClass = any.get();
Constructor extends Quest> 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)));
+ }
}