From 67d534ae3adc5878f1829a0b62c24e4d09573313 Mon Sep 17 00:00:00 2001 From: fatpigsarefat Date: Fri, 27 Jul 2018 01:25:36 +0100 Subject: Brewing task type completed. - Added BrewingTaskType "brewing" - Added example brewing config to the config - Changed version to 2.0.13 - Started work on BrewingCertainTaskType "brewingcertain" --- src/main/java/me/fatpigsarefat/quests/Quests.java | 3 + .../tasktypes/types/BrewingCertainTaskType.java | 114 +++++++++++++++++++++ .../quests/tasktypes/types/BrewingTaskType.java | 100 ++++++++++++++++++ src/main/resources/config.yml | 27 +++++ 4 files changed, 244 insertions(+) create mode 100644 src/main/java/me/fatpigsarefat/quests/quests/tasktypes/types/BrewingCertainTaskType.java create mode 100644 src/main/java/me/fatpigsarefat/quests/quests/tasktypes/types/BrewingTaskType.java (limited to 'src/main') diff --git a/src/main/java/me/fatpigsarefat/quests/Quests.java b/src/main/java/me/fatpigsarefat/quests/Quests.java index 7904738b..371ffb5c 100644 --- a/src/main/java/me/fatpigsarefat/quests/Quests.java +++ b/src/main/java/me/fatpigsarefat/quests/Quests.java @@ -120,6 +120,9 @@ public class Quests extends JavaPlugin { taskTypeManager.registerTaskType(new ShearingTaskType()); taskTypeManager.registerTaskType(new PositionTaskType()); taskTypeManager.registerTaskType(new PlaytimeTaskType()); + taskTypeManager.registerTaskType(new BrewingTaskType()); + // TODO: FIX + // taskTypeManager.registerTaskType(new BrewingCertainTaskType()); if (Bukkit.getPluginManager().isPluginEnabled("ASkyBlock")) { taskTypeManager.registerTaskType(new ASkyBlockLevelType()); } diff --git a/src/main/java/me/fatpigsarefat/quests/quests/tasktypes/types/BrewingCertainTaskType.java b/src/main/java/me/fatpigsarefat/quests/quests/tasktypes/types/BrewingCertainTaskType.java new file mode 100644 index 00000000..f2065146 --- /dev/null +++ b/src/main/java/me/fatpigsarefat/quests/quests/tasktypes/types/BrewingCertainTaskType.java @@ -0,0 +1,114 @@ +// TODO: fix +// +//package me.fatpigsarefat.quests.quests.tasktypes.types; +// +//import me.fatpigsarefat.quests.Quests; +//import me.fatpigsarefat.quests.player.QPlayer; +//import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress; +//import me.fatpigsarefat.quests.player.questprogressfile.QuestProgressFile; +//import me.fatpigsarefat.quests.player.questprogressfile.TaskProgress; +//import me.fatpigsarefat.quests.quests.Quest; +//import me.fatpigsarefat.quests.quests.Task; +//import me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +//import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +//import org.bukkit.Bukkit; +//import org.bukkit.Location; +//import org.bukkit.Material; +//import org.bukkit.entity.Player; +//import org.bukkit.event.EventHandler; +//import org.bukkit.event.EventPriority; +//import org.bukkit.event.block.Action; +//import org.bukkit.event.inventory.BrewEvent; +//import org.bukkit.event.player.PlayerInteractEvent; +//import org.bukkit.inventory.ItemStack; +// +//import java.util.ArrayList; +//import java.util.HashMap; +//import java.util.List; +//import java.util.UUID; +// +//public final class BrewingCertainTaskType extends TaskType { +// +// private List creatorConfigValues = new ArrayList<>(); +// private HashMap brewingStands = new HashMap<>(); +// +// public BrewingCertainTaskType() { +// super("brewingcertain", "fatpigsarefat", "Brew a certain type of potion."); +// this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of potions to be brewed.")); +// this.creatorConfigValues.add(new ConfigValue("potion", true, "ID of potion to be brewed.")); +// } +// +// @Override +// public List getCreatorConfigValues() { +// return creatorConfigValues; +// } +// +// @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) +// public void onBlockPlace(PlayerInteractEvent event) { +// if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { +// if (event.getClickedBlock().getType() == Material.BREWING_STAND) { +// brewingStands.put(event.getClickedBlock().getLocation(), event.getPlayer().getUniqueId()); +// } +// } +// } +// +// @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) +// public void onBlockPlace(BrewEvent event) { +// UUID uuid; +// if ((uuid = brewingStands.get(event.getBlock().getLocation())) != null) { +// Player player = Bukkit.getPlayer(uuid); +// +// if (player == null) { +// return; +// } +// +// 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 potionsNeeded = (int) task.getConfigValue("amount"); +// +// int progress; +// if (taskProgress.getProgress() == null) { +// progress = 0; +// } else { +// progress = (int) taskProgress.getProgress(); +// } +// +// int potionType = (int) task.getConfigValue("potion"); +// +// ItemStack potion1 = event.getContents().getItem(0); +// if (potion1.getDurability() != potionType) { +// potion1 = null; +// } +// ItemStack potion2 = event.getContents().getItem(1); +// if (potion2.getDurability() != potionType) { +// potion2 = null; +// } +// ItemStack potion3 = event.getContents().getItem(2); +// if (potion3.getDurability() != potionType) { +// potion3 = null; +// } +// +// taskProgress.setProgress(progress + (potion1 == null ? 0 : 1) + (potion2 == null ? 0 : 1) + (potion3 == null ? 0 : 1)); +// +// if (((int) taskProgress.getProgress()) >= potionsNeeded) { +// taskProgress.setCompleted(true); +// } +// } +// } +// } +// } +// } +// +//} diff --git a/src/main/java/me/fatpigsarefat/quests/quests/tasktypes/types/BrewingTaskType.java b/src/main/java/me/fatpigsarefat/quests/quests/tasktypes/types/BrewingTaskType.java new file mode 100644 index 00000000..129c1c84 --- /dev/null +++ b/src/main/java/me/fatpigsarefat/quests/quests/tasktypes/types/BrewingTaskType.java @@ -0,0 +1,100 @@ +package me.fatpigsarefat.quests.quests.tasktypes.types; + +import me.fatpigsarefat.quests.Quests; +import me.fatpigsarefat.quests.player.QPlayer; +import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress; +import me.fatpigsarefat.quests.player.questprogressfile.QuestProgressFile; +import me.fatpigsarefat.quests.player.questprogressfile.TaskProgress; +import me.fatpigsarefat.quests.quests.Quest; +import me.fatpigsarefat.quests.quests.Task; +import me.fatpigsarefat.quests.quests.tasktypes.ConfigValue; +import me.fatpigsarefat.quests.quests.tasktypes.TaskType; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.Action; +import org.bukkit.event.inventory.BrewEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.UUID; + +public final class BrewingTaskType extends TaskType { + + private List creatorConfigValues = new ArrayList<>(); + private HashMap brewingStands = new HashMap<>(); + + public BrewingTaskType() { + super("brewing", "fatpigsarefat", "Brew a potion."); + this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of potions to be brewed.")); + } + + @Override + public List getCreatorConfigValues() { + return creatorConfigValues; + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockPlace(PlayerInteractEvent event) { + if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (event.getClickedBlock().getType() == Material.BREWING_STAND) { + brewingStands.put(event.getClickedBlock().getLocation(), event.getPlayer().getUniqueId()); + } + } + } + + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) + public void onBlockPlace(BrewEvent event) { + UUID uuid; + if ((uuid = brewingStands.get(event.getBlock().getLocation())) != null) { + Player player = Bukkit.getPlayer(uuid); + + if (player == null) { + return; + } + + 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 potionsNeeded = (int) task.getConfigValue("amount"); + + int progress; + if (taskProgress.getProgress() == null) { + progress = 0; + } else { + progress = (int) taskProgress.getProgress(); + } + + ItemStack potion1 = event.getContents().getItem(0); + ItemStack potion2 = event.getContents().getItem(1); + ItemStack potion3 = event.getContents().getItem(2); + + taskProgress.setProgress(progress + (potion1 == null ? 0 : 1) + (potion2 == null ? 0 : 1) + (potion3 == null ? 0 : 1)); + + if (((int) taskProgress.getProgress()) >= potionsNeeded) { + taskProgress.setCompleted(true); + } + } + } + } + } + } + +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index a2931b90..a293351d 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -690,6 +690,33 @@ quests: enabled: true time: 1440 + brewing: + tasks: + brewing: + type: "brewing" + amount: 10 + display: + name: "&cBrewer" + lore-normal: + - "&7This quest requires you to:" + - "&7 - Brew 10 potions." + - "" + - "&7Rewards:" + - "&7 - $500 added to your in-game balance." + lore-started: + - "" + - "&7Your current progression:" + - "&7 - {brewing:progress}/10 potions brewed." + type: "BREWING_STAND_ITEM" + rewards: + - "eco give {player} 500" + options: + category: "medium" + repeatable: true + cooldown: + enabled: true + time: 1440 + askyblock: tasks: islandlevel: -- cgit v1.2.3-70-g09d2