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 5abb1bf..2f4221a 100644
--- a/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandSetQuest.java
+++ b/src/main/java/com/alttd/altitudequests/commands/subcommands/CommandSetQuest.java
@@ -31,7 +31,7 @@ public class CommandSetQuest extends SubCommand {
new BukkitRunnable() {
@Override
public void run() {
- if (!Quest.loadDailyQuest(args[2], args[3], 0, 0, player.getUniqueId(), false))
+ if (!Quest.loadDailyQuest(args[2], args[3], 0, 0, player.getUniqueId(), -1, 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/database/Database.java b/src/main/java/com/alttd/altitudequests/database/Database.java
index b8a80c4..d94c2e8 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, " +
+ "amount INT NOT NULL, " +
"reward_received BIT(1) NOT NULL, " +
"PRIMARY KEY (uuid)" +
")";
diff --git a/src/main/java/com/alttd/altitudequests/events/PluginMessageListener.java b/src/main/java/com/alttd/altitudequests/events/PluginMessageListener.java
index 6502ce0..bffd6ce 100644
--- a/src/main/java/com/alttd/altitudequests/events/PluginMessageListener.java
+++ b/src/main/java/com/alttd/altitudequests/events/PluginMessageListener.java
@@ -78,6 +78,7 @@ public class PluginMessageListener implements org.bukkit.plugin.messaging.Plugin
resultSet.getInt("step_1_progress"),
resultSet.getInt("step_2_progress"),
uuid,
+ resultSet.getInt("amount"),
resultSet.getInt("reward_received") == 1)) {
if (Config.DEBUG)
Logger.info("Loading daily quest for %", uuid.toString());
diff --git a/src/main/java/com/alttd/altitudequests/objects/Quest.java b/src/main/java/com/alttd/altitudequests/objects/Quest.java
index 582c362..3a4b853 100644
--- a/src/main/java/com/alttd/altitudequests/objects/Quest.java
+++ b/src/main/java/com/alttd/altitudequests/objects/Quest.java
@@ -48,17 +48,17 @@ public abstract class Quest {
private boolean rewardReceived;
private final int amount;
- public Quest(UUID uuid, int step1, int step2, Variant variant, boolean rewardReceived) {
+ public Quest(UUID uuid, int step1, int step2, Variant variant, int amount, boolean rewardReceived) {
this.uuid = uuid;
this.step1 = step1;
this.step2 = step2;
this.variant = variant;
this.isDone = rewardReceived;
this.rewardReceived = rewardReceived;
- if (variant == null)
- amount = 0;
+ if (variant != null && amount == -1)
+ this.amount = variant.calculateAmount(loadQuestsDoneThisMonth(uuid));
else
- amount = variant.calculateAmount(loadQuestsDoneThisMonth(uuid));
+ this.amount = amount;
}
private int loadQuestsDoneThisMonth(UUID uuid) {
@@ -141,7 +141,7 @@ public abstract class Quest {
}
}
- public static boolean loadDailyQuest(String quest, String quest_variant, int step_1_progress, int step_2_progress, UUID uuid, boolean turnedIn) {
+ public static boolean loadDailyQuest(String quest, String quest_variant, int step_1_progress, int step_2_progress, UUID uuid, int amount, boolean turnedIn) {
Optional> any = possibleQuests.stream()
.filter(q -> q.getSimpleName().equals(quest))
.findAny();
@@ -152,8 +152,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, boolean.class);
- Quest quest1 = constructor.newInstance(uuid, step_1_progress, step_2_progress, quest_variant, turnedIn);
+ constructor = aClass.getConstructor(UUID.class, int.class, int.class, String.class, int.class, boolean.class);
+ Quest quest1 = constructor.newInstance(uuid, step_1_progress, step_2_progress, quest_variant, amount, turnedIn);
dailyQuests.put(uuid, quest1);
} catch (NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
e.printStackTrace();
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 b8b0f47..cff361c 100644
--- a/src/main/java/com/alttd/altitudequests/objects/quests/BreedMobsQuest.java
+++ b/src/main/java/com/alttd/altitudequests/objects/quests/BreedMobsQuest.java
@@ -25,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)), false);
+ QuestsConfig.BREED_MOB_QUEST.get(Utilities.randomOr0(QuestsConfig.BREED_MOB_QUEST.size() - 1)), -1, false);
if (getVariant() instanceof BreedMobsQuestObject breedMobsQuestObject)
this.breedMobsQuestObject = breedMobsQuestObject;
else
@@ -36,10 +36,10 @@ public class BreedMobsQuest extends Quest {
}
}
- public BreedMobsQuest(UUID uuid, int step1, int step2, String variant, boolean rewardReceived) {
+ public BreedMobsQuest(UUID uuid, int step1, int step2, String variant, int amount, boolean rewardReceived) {
super(uuid, step1, step2, QuestsConfig.BREED_MOB_QUEST.stream()
.filter(object -> variant.equals(object.getInternalName()))
- .findAny().orElse(null), rewardReceived);
+ .findAny().orElse(null), amount, rewardReceived);
if (getVariant() instanceof BreedMobsQuestObject breedMobsQuestObject)
this.breedMobsQuestObject = breedMobsQuestObject;
else
@@ -54,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, reward_received) " +
- "VALUES (?, ?, ?, ?, ?, ?, ?) " +
+ "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress, amount, reward_received) " +
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?) " +
"ON DUPLICATE KEY UPDATE " +
- "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, reward_received = ?";
+ "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, amount = ?, reward_received = ?";
try {
PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql);
int yearDay = Utilities.getYearDay();
@@ -69,13 +69,15 @@ public class BreedMobsQuest extends Quest {
statement.setString(4, breedMobsQuestObject.getInternalName());
statement.setInt(5, getStep1());
statement.setInt(6, getStep2());
- 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.setInt(7, getAmount());
+ statement.setInt(8, isRewardReceived() ? 1 : 0);
+ statement.setString(9, this.getClass().getSimpleName());
+ statement.setString(10, breedMobsQuestObject.getInternalName());
+ statement.setInt(11, getStep1());
+ statement.setInt(12, getStep2());
+ statement.setInt(13, yearDay);
+ statement.setInt(14, getAmount());
+ statement.setInt(15, isRewardReceived() ? 1 : 0);
statement.execute();
} catch (SQLException exception) {
exception.printStackTrace();
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 6198212..5e8e172 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)), false);
+ QuestsConfig.COLLECT_DROPS_QUEST.get(Utilities.randomOr0(QuestsConfig.COLLECT_DROPS_QUEST.size() - 1)), -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, boolean rewardReceived) {
+ public CollectDropsQuest(UUID uuid, int step1, int step2, String variant, int amount, boolean rewardReceived) {
super(uuid, step1, step2, QuestsConfig.COLLECT_DROPS_QUEST.stream()
.filter(object -> variant.equals(object.getInternalName()))
- .findAny().orElse(null), rewardReceived);
+ .findAny().orElse(null), amount, 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, reward_received) " +
- "VALUES (?, ?, ?, ?, ?, ?, ?) " +
+ "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress, amount, reward_received) " +
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?) " +
"ON DUPLICATE KEY UPDATE " +
- "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, reward_received = ?";
+ "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, amount = ?, reward_received = ?";
try {
PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql);
int yearDay = Utilities.getYearDay();
@@ -72,13 +72,15 @@ public class CollectDropsQuest extends Quest {
statement.setString(4, collectDropsQuestObject.getInternalName());
statement.setInt(5, getStep1());
statement.setInt(6, getStep2());
- 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.setInt(7, getAmount());
+ statement.setInt(8, isRewardReceived() ? 1 : 0);
+ statement.setString(9, this.getClass().getSimpleName());
+ statement.setString(10, collectDropsQuestObject.getInternalName());
+ statement.setInt(11, getStep1());
+ statement.setInt(12, getStep2());
+ statement.setInt(13, yearDay);
+ statement.setInt(14, getAmount());
+ statement.setInt(15, isRewardReceived() ? 1 : 0);
statement.execute();
} catch (SQLException exception) {
exception.printStackTrace();
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 163c900..c3445fd 100644
--- a/src/main/java/com/alttd/altitudequests/objects/quests/KillMobsQuest.java
+++ b/src/main/java/com/alttd/altitudequests/objects/quests/KillMobsQuest.java
@@ -25,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)), false);
+ QuestsConfig.KILL_MOB_QUEST.get(Utilities.randomOr0(QuestsConfig.KILL_MOB_QUEST.size() - 1)), -1, false);
if (getVariant() instanceof KillMobsQuestObject killMobsQuestObject)
this.killMobsQuestObject = killMobsQuestObject;
else
@@ -36,10 +36,10 @@ public class KillMobsQuest extends Quest {
}
}
- public KillMobsQuest(UUID uuid, int step1, int step2, String variant, boolean rewardReceived) {
+ public KillMobsQuest(UUID uuid, int step1, int step2, String variant, int amount, boolean rewardReceived) {
super(uuid, step1, step2, QuestsConfig.KILL_MOB_QUEST.stream()
.filter(object -> variant.equals(object.getInternalName()))
- .findAny().orElse(null), rewardReceived);
+ .findAny().orElse(null), amount, rewardReceived);
if (getVariant() instanceof KillMobsQuestObject killMobsQuestObject)
this.killMobsQuestObject = killMobsQuestObject;
else
@@ -54,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, reward_received) " +
- "VALUES (?, ?, ?, ?, ?, ?, ?) " +
+ "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress, amount, reward_received) " +
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?) " +
"ON DUPLICATE KEY UPDATE " +
- "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, reward_received = ?";
+ "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, amount = ?, reward_received = ?";
try {
PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql);
int yearDay = Utilities.getYearDay();
@@ -69,13 +69,15 @@ public class KillMobsQuest extends Quest {
statement.setString(4, killMobsQuestObject.getInternalName());
statement.setInt(5, getStep1());
statement.setInt(6, getStep2());
- 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.setInt(7, getAmount());
+ statement.setInt(8, isRewardReceived() ? 1 : 0);
+ statement.setString(9, this.getClass().getSimpleName());
+ statement.setString(10, killMobsQuestObject.getInternalName());
+ statement.setInt(11, getStep1());
+ statement.setInt(12, getStep2());
+ statement.setInt(13, yearDay);
+ statement.setInt(14, getAmount());
+ statement.setInt(15, isRewardReceived() ? 1 : 0);
statement.execute();
} catch (SQLException exception) {
exception.printStackTrace();
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 7d75b3d..ea9de6c 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)), false);
+ QuestsConfig.MINE_QUESTS.get(Utilities.randomOr0(QuestsConfig.MINE_QUESTS.size() - 1)), -1, false);
if (getVariant() instanceof MineQuestObject mineQuestObject)
this.mineQuestObject = mineQuestObject;
else
@@ -36,10 +36,10 @@ public class MineQuest extends Quest {
}
}
- public MineQuest(UUID uuid, int mined, int turnedIn, String variant, boolean rewardReceived) {
+ public MineQuest(UUID uuid, int mined, int turnedIn, String variant, int amount, boolean rewardReceived) {
super(uuid, mined, turnedIn, QuestsConfig.MINE_QUESTS.stream()
.filter(object -> variant.equals(object.getInternalName()))
- .findAny().orElse(null),
+ .findAny().orElse(null), amount,
rewardReceived);
if (getVariant() instanceof MineQuestObject mineQuestObject)
this.mineQuestObject = mineQuestObject;
@@ -55,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, reward_received) " +
- "VALUES (?, ?, ?, ?, ?, ?, ?) " +
+ "(year_day, uuid, quest, quest_variant, step_1_progress, step_2_progress, amount, reward_received) " +
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?) " +
"ON DUPLICATE KEY UPDATE " +
- "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, reward_received = ?";
+ "quest = ?, quest_variant = ?, step_1_progress = ?, step_2_progress = ?, year_day = ?, amount = ?, reward_received = ?";
try {
PreparedStatement statement = Database.getDatabase().getConnection().prepareStatement(sql);
int yearDay = Utilities.getYearDay();
@@ -70,13 +70,15 @@ public class MineQuest extends Quest {
statement.setString(4, mineQuestObject.getInternalName());
statement.setInt(5, getStep1());
statement.setInt(6, getStep2());
- 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.setInt(7, getAmount());
+ statement.setInt(8, isRewardReceived() ? 1 : 0);
+ statement.setString(9, this.getClass().getSimpleName());
+ statement.setString(10, mineQuestObject.getInternalName());
+ statement.setInt(11, getStep1());
+ statement.setInt(12, getStep2());
+ statement.setInt(13, yearDay);
+ statement.setInt(14, getAmount());
+ statement.setInt(15, isRewardReceived() ? 1 : 0);
statement.execute();
} catch (SQLException exception) {
exception.printStackTrace();