aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/com/leonardobishop
diff options
context:
space:
mode:
authorToastedCoconut <bavo1997@gmail.com>2019-06-29 21:24:51 +0200
committerLMBishop <13875753+LMBishop@users.noreply.github.com>2019-06-29 20:24:51 +0100
commit5ccbced69af227f3d3846974bb6f4e9fc9e2fb68 (patch)
tree1b8421238f95c359f9bbc1d965be0058a94a39fa /src/main/java/com/leonardobishop
parente4e2a28defeb7dded336cc385135cbe2b4efe316 (diff)
New tasks: breeding and xpearn (#44)
Diffstat (limited to 'src/main/java/com/leonardobishop')
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java88
-rw-r--r--src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java68
2 files changed, 156 insertions, 0 deletions
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java
new file mode 100644
index 00000000..b77b05c6
--- /dev/null
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/BreedingTaskType.java
@@ -0,0 +1,88 @@
+package com.leonardobishop.quests.quests.tasktypes.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.entity.CreatureSpawnEvent;
+import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
+
+import com.leonardobishop.quests.Quests;
+import com.leonardobishop.quests.player.QPlayer;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgress;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
+import com.leonardobishop.quests.player.questprogressfile.TaskProgress;
+import com.leonardobishop.quests.quests.Quest;
+import com.leonardobishop.quests.quests.Task;
+import com.leonardobishop.quests.quests.tasktypes.ConfigValue;
+import com.leonardobishop.quests.quests.tasktypes.TaskType;
+
+public final class BreedingTaskType extends TaskType {
+
+ private List<ConfigValue> creatorConfigValues = new ArrayList<>();
+
+ public BreedingTaskType() {
+ super("breeding", "toasted", "Breed a set amount of animals.");
+ this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of animals to be bred"));
+ }
+
+ @Override
+ public List<ConfigValue> getCreatorConfigValues() {
+ return creatorConfigValues;
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onBreed(CreatureSpawnEvent e) {
+ if (!e.getSpawnReason().equals(SpawnReason.BREEDING)) {
+ return;
+ }
+
+ Entity ent = e.getEntity();
+ List<Entity> entList = ent.getNearbyEntities(10, 10, 10);
+
+ if (entList.isEmpty()) {
+ return;
+ }
+ // Check if there is a player in the list, otherwise: return.
+ for (Entity current : entList) {
+
+ if (current instanceof Player) {
+ Player player = (Player) current;
+ QPlayer qPlayer = Quests.getPlayerManager().getPlayer(player.getUniqueId());
+ QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (questProgressFile.hasStartedQuest(quest)) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
+
+ int breedingNeeded = (int) task.getConfigValue("amount");
+ int breedingProgress;
+
+ if (taskProgress.getProgress() == null) {
+ breedingProgress = 0;
+ } else {
+ breedingProgress = (int) taskProgress.getProgress();
+ }
+
+ taskProgress.setProgress(breedingProgress + 1);
+
+ if (((int) taskProgress.getProgress()) >= breedingNeeded) {
+ taskProgress.setCompleted(true);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java
new file mode 100644
index 00000000..f186c9f9
--- /dev/null
+++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/ExpEarnTaskType.java
@@ -0,0 +1,68 @@
+package com.leonardobishop.quests.quests.tasktypes.types;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.player.PlayerExpChangeEvent;
+
+import com.leonardobishop.quests.Quests;
+import com.leonardobishop.quests.player.QPlayer;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgress;
+import com.leonardobishop.quests.player.questprogressfile.QuestProgressFile;
+import com.leonardobishop.quests.player.questprogressfile.TaskProgress;
+import com.leonardobishop.quests.quests.Quest;
+import com.leonardobishop.quests.quests.Task;
+import com.leonardobishop.quests.quests.tasktypes.ConfigValue;
+import com.leonardobishop.quests.quests.tasktypes.TaskType;
+
+public final class ExpEarnTaskType extends TaskType {
+
+ private List<ConfigValue> creatorConfigValues = new ArrayList<>();
+
+ public ExpEarnTaskType() {
+ super("expearn", "toasted", "Earn a set amount of exp.");
+ this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of exp that needs to be earned."));
+ }
+
+ @Override
+ public List<ConfigValue> getCreatorConfigValues() {
+ return creatorConfigValues;
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+ public void onExpEarn(PlayerExpChangeEvent e) {
+ QPlayer qPlayer = Quests.getPlayerManager().getPlayer(e.getPlayer().getUniqueId());
+ QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile();
+
+ for (Quest quest : super.getRegisteredQuests()) {
+ if (questProgressFile.hasStartedQuest(quest)) {
+ QuestProgress questProgress = questProgressFile.getQuestProgress(quest);
+
+ for (Task task : quest.getTasksOfType(super.getType())) {
+ TaskProgress taskProgress = questProgress.getTaskProgress(task.getId());
+
+ if (taskProgress.isCompleted()) {
+ continue;
+ }
+ int amount = e.getAmount();
+ int expNeeded = (int) task.getConfigValue("amount");
+
+ int progressExp;
+ if (taskProgress.getProgress() == null) {
+ progressExp = 0;
+ } else {
+ progressExp = (int) taskProgress.getProgress();
+ }
+
+ taskProgress.setProgress(progressExp + amount);
+
+ if (((int) taskProgress.getProgress()) >= expNeeded) {
+ taskProgress.setCompleted(true);
+ }
+ }
+ }
+ }
+ }
+}