diff options
Diffstat (limited to 'bukkit/src/main/java/com/leonardobishop')
5 files changed, 96 insertions, 104 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java index d2f26d23..1e6c2360 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/BukkitQuestsPlugin.java @@ -105,6 +105,10 @@ import com.leonardobishop.quests.bukkit.tasktype.type.TamingTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.TradingTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.WalkingTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ASkyBlockLevelTaskType; +import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BedWars1058BedBreakTask; +import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BedWars1058FinalKillTask; +import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BedWars1058LoseTask; +import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BedWars1058WinTask; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BentoBoxLevelTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.CitizensDeliverTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.CitizensInteractTaskType; @@ -131,10 +135,6 @@ import com.leonardobishop.quests.bukkit.tasktype.type.dependent.VotingPluginVote import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ZNPCsPlusDeliverTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.ZNPCsPlusInteractTaskType; import com.leonardobishop.quests.bukkit.tasktype.type.dependent.uSkyBlockLevelTaskType; -import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BedWars1058BedBreakTask; -import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BedWars1058FinalKillTask; -import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BedWars1058WinTask; -import com.leonardobishop.quests.bukkit.tasktype.type.dependent.BedWars1058LoseTask; import com.leonardobishop.quests.bukkit.util.CompatUtils; import com.leonardobishop.quests.bukkit.util.FormatUtils; import com.leonardobishop.quests.bukkit.util.LogHistory; @@ -481,6 +481,10 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { // Register task types with enabled plugin compatibility requirement taskTypeManager.registerTaskType(() -> new ASkyBlockLevelTaskType(this), () -> CompatUtils.isPluginEnabled("ASkyBlock")); + taskTypeManager.registerTaskType(() -> new BedWars1058BedBreakTask(this), () -> CompatUtils.isPluginEnabled("BedWars1058")); // not tested + taskTypeManager.registerTaskType(() -> new BedWars1058FinalKillTask(this), () -> CompatUtils.isPluginEnabled("BedWars1058")); // not tested + taskTypeManager.registerTaskType(() -> new BedWars1058LoseTask(this), () -> CompatUtils.isPluginEnabled("BedWars1058")); // not tested + taskTypeManager.registerTaskType(() -> new BedWars1058WinTask(this), () -> CompatUtils.isPluginEnabled("BedWars1058")); // not tested taskTypeManager.registerTaskType(() -> new BentoBoxLevelTaskType(this), () -> CompatUtils.isPluginEnabled("BentoBox") && CompatUtils.classExists("world.bentobox.level.events.IslandLevelCalculatedEvent")); taskTypeManager.registerTaskType(() -> new CitizensDeliverTaskType(this), () -> CompatUtils.isPluginEnabled("Citizens")); taskTypeManager.registerTaskType(() -> new CitizensInteractTaskType(this), () -> CompatUtils.isPluginEnabled("Citizens")); @@ -505,10 +509,6 @@ public class BukkitQuestsPlugin extends JavaPlugin implements Quests { taskTypeManager.registerTaskType(() -> new VotingPluginVoteType(this), () -> CompatUtils.isPluginEnabled("VotingPlugin")); // not tested taskTypeManager.registerTaskType(() -> new ZNPCsPlusDeliverTaskType(this), () -> CompatUtils.isPluginEnabled("ZNPCsPlus")); taskTypeManager.registerTaskType(() -> new ZNPCsPlusInteractTaskType(this), () -> CompatUtils.isPluginEnabled("ZNPCsPlus")); - taskTypeManager.registerTaskType(() -> new BedWars1058BedBreakTask(this), () -> CompatUtils.isPluginEnabled("BedWars1058")); - taskTypeManager.registerTaskType(() -> new BedWars1058FinalKillTask(this), () -> CompatUtils.isPluginEnabled("BedWars1058")); - taskTypeManager.registerTaskType(() -> new BedWars1058WinTask(this), () -> CompatUtils.isPluginEnabled("BedWars1058")); - taskTypeManager.registerTaskType(() -> new BedWars1058LoseTask(this), () -> CompatUtils.isPluginEnabled("BedWars1058")); // Register task types with enabled specific version plugin compatibility requirement taskTypeManager.registerTaskType(() -> new IridiumSkyblockValueTaskType(this), () -> { // TODO FIX diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058BedBreakTask.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058BedBreakTask.java index 600ce31e..7232ce9c 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058BedBreakTask.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058BedBreakTask.java @@ -1,10 +1,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type.dependent; import com.andrei1058.bedwars.api.events.player.PlayerBedBreakEvent; -import com.google.common.collect.HashBasedTable; -import com.google.common.collect.Table; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; -import com.leonardobishop.quests.bukkit.item.QuestItem; import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; import com.leonardobishop.quests.bukkit.util.TaskUtils; import com.leonardobishop.quests.bukkit.util.constraint.TaskConstraintSet; @@ -19,7 +16,6 @@ import org.bukkit.event.EventPriority; public final class BedWars1058BedBreakTask extends BukkitTaskType { private final BukkitQuestsPlugin plugin; - private final Table<String, String, QuestItem> fixedQuestItemCache = HashBasedTable.create(); public BedWars1058BedBreakTask(BukkitQuestsPlugin plugin) { super("bedwars1058_bedbreak", TaskUtils.TASK_ATTRIBUTION_STRING, "Break a set amount of beds in BedWars1058."); @@ -29,14 +25,12 @@ public final class BedWars1058BedBreakTask extends BukkitTaskType { super.addConfigValidator(TaskUtils.useIntegerConfigValidator(this, "amount")); } - @Override - public void onReady() { - fixedQuestItemCache.clear(); - } - @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerBedBreak(PlayerBedBreakEvent event) { Player player = event.getPlayer(); + if (player.hasMetadata("NPC")) { + return; + } QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); if (qPlayer == null) { @@ -48,22 +42,18 @@ public final class BedWars1058BedBreakTask extends BukkitTaskType { Task task = pendingTask.task(); TaskProgress taskProgress = pendingTask.taskProgress(); - super.debug("Player break a bed in BedWars", quest.getId(), task.getId(), player.getUniqueId()); - - Runnable increment = () -> { - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); + super.debug("Player broke a bed in BedWars", quest.getId(), task.getId(), player.getUniqueId()); - int amount = (int) task.getConfigValue("amount"); - if (progress >= amount) { - super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setCompleted(true); - } + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); - TaskUtils.sendTrackAdvancement(player, quest, task, pendingTask, amount); - }; + int amount = (int) task.getConfigValue("amount"); + if (progress >= amount) { + super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); + taskProgress.setCompleted(true); + } - increment.run(); + TaskUtils.sendTrackAdvancement(player, quest, task, pendingTask, amount); } } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058FinalKillTask.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058FinalKillTask.java index 5bfb441e..da9844f3 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058FinalKillTask.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058FinalKillTask.java @@ -12,9 +12,8 @@ import com.leonardobishop.quests.common.quest.Task; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -public final class BedWars1058FinalKillTask extends BukkitTaskType implements Listener { +public final class BedWars1058FinalKillTask extends BukkitTaskType { private final BukkitQuestsPlugin plugin; @@ -28,41 +27,38 @@ public final class BedWars1058FinalKillTask extends BukkitTaskType implements Li @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerKill(PlayerKillEvent event) { - Player killer = event.getKiller(); - if (killer == null) { + final PlayerKillEvent.PlayerKillCause cause = event.getCause(); + if (!cause.isFinalKill()) { return; } - if (!event.getCause().isFinalKill()) { + Player killer = event.getKiller(); + if (killer == null || killer.hasMetadata("NPC")) { return; } - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(killer.getUniqueId()); - if (qPlayer == null) { + QPlayer qKiller = plugin.getPlayerManager().getPlayer(killer.getUniqueId()); + if (qKiller == null) { return; } - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(killer, qPlayer, this, TaskConstraintSet.ALL)) { + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(killer, qKiller, this, TaskConstraintSet.ALL)) { Quest quest = pendingTask.quest(); Task task = pendingTask.task(); TaskProgress taskProgress = pendingTask.taskProgress(); super.debug("Player got a final kill", quest.getId(), task.getId(), killer.getUniqueId()); - Runnable increment = () -> { - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), killer.getUniqueId()); - - int amount = (int) task.getConfigValue("amount"); - if (progress >= amount) { - super.debug("Marking task as complete", quest.getId(), task.getId(), killer.getUniqueId()); - taskProgress.setCompleted(true); - } + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), killer.getUniqueId()); - TaskUtils.sendTrackAdvancement(killer, quest, task, pendingTask, amount); - }; + int amount = (int) task.getConfigValue("amount"); + if (progress >= amount) { + super.debug("Marking task as complete", quest.getId(), task.getId(), killer.getUniqueId()); + taskProgress.setCompleted(true); + } - increment.run(); + TaskUtils.sendTrackAdvancement(killer, quest, task, pendingTask, amount); } } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058LoseTask.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058LoseTask.java index 55b30a98..77c84144 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058LoseTask.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058LoseTask.java @@ -13,11 +13,11 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; +import java.util.List; import java.util.UUID; -public final class BedWars1058LoseTask extends BukkitTaskType implements Listener { +public final class BedWars1058LoseTask extends BukkitTaskType { private final BukkitQuestsPlugin plugin; @@ -31,41 +31,44 @@ public final class BedWars1058LoseTask extends BukkitTaskType implements Listene @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onGameEnd(GameEndEvent event) { + final List<UUID> loserUniqueIds = event.getLosers(); - for (UUID uuid : event.getLosers()) { - Player player = Bukkit.getPlayer(uuid); + for (UUID loserUniqueId : loserUniqueIds) { + Player loser = Bukkit.getPlayer(loserUniqueId); - if (player == null) { - return; - } - - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); - if (qPlayer == null) { - return; + if (loser != null) { + this.handle(loser); } + } + } - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this, TaskConstraintSet.ALL)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); + private void handle(final Player loser) { + if (loser.hasMetadata("NPC")) { + return; + } - super.debug("Player lost a BedWars game", quest.getId(), task.getId(), player.getUniqueId()); + QPlayer qLoser = plugin.getPlayerManager().getPlayer(loser.getUniqueId()); + if (qLoser == null) { + return; + } - Runnable increment = () -> { - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(loser, qLoser, this, TaskConstraintSet.ALL)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); - int amount = (int) task.getConfigValue("amount"); - if (progress >= amount) { - super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setCompleted(true); - } + super.debug("Player lost a BedWars game", quest.getId(), task.getId(), loser.getUniqueId()); - TaskUtils.sendTrackAdvancement(player, quest, task, pendingTask, amount); - }; + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), loser.getUniqueId()); - increment.run(); + int amount = (int) task.getConfigValue("amount"); + if (progress >= amount) { + super.debug("Marking task as complete", quest.getId(), task.getId(), loser.getUniqueId()); + taskProgress.setCompleted(true); } + + TaskUtils.sendTrackAdvancement(loser, quest, task, pendingTask, amount); } } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058WinTask.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058WinTask.java index 8e2a445f..f4ec338b 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058WinTask.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/dependent/BedWars1058WinTask.java @@ -13,11 +13,11 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; +import java.util.List; import java.util.UUID; -public final class BedWars1058WinTask extends BukkitTaskType implements Listener { +public final class BedWars1058WinTask extends BukkitTaskType { private final BukkitQuestsPlugin plugin; @@ -31,41 +31,44 @@ public final class BedWars1058WinTask extends BukkitTaskType implements Listener @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onGameEnd(GameEndEvent event) { + final List<UUID> winnerUniqueIds = event.getLosers(); - for (UUID uuid : event.getWinners()) { - Player player = Bukkit.getPlayer(uuid); + for (UUID winnerUniqueId : winnerUniqueIds) { + Player winner = Bukkit.getPlayer(winnerUniqueId); - if (player == null) { - return; - } - - QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); - if (qPlayer == null) { - return; + if (winner != null) { + this.handle(winner); } + } + } - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this, TaskConstraintSet.ALL)) { - Quest quest = pendingTask.quest(); - Task task = pendingTask.task(); - TaskProgress taskProgress = pendingTask.taskProgress(); + private void handle(final Player winner) { + if (winner.hasMetadata("NPC")) { + return; + } - super.debug("Player won a BedWars game", quest.getId(), task.getId(), player.getUniqueId()); + QPlayer qWinner = plugin.getPlayerManager().getPlayer(winner.getUniqueId()); + if (qWinner == null) { + return; + } - Runnable increment = () -> { - int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); - super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(winner, qWinner, this, TaskConstraintSet.ALL)) { + Quest quest = pendingTask.quest(); + Task task = pendingTask.task(); + TaskProgress taskProgress = pendingTask.taskProgress(); - int amount = (int) task.getConfigValue("amount"); - if (progress >= amount) { - super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setCompleted(true); - } + super.debug("Player won a BedWars game", quest.getId(), task.getId(), winner.getUniqueId()); - TaskUtils.sendTrackAdvancement(player, quest, task, pendingTask, amount); - }; + int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); + super.debug("Incrementing task progress (now " + progress + ")", quest.getId(), task.getId(), winner.getUniqueId()); - increment.run(); + int amount = (int) task.getConfigValue("amount"); + if (progress >= amount) { + super.debug("Marking task as complete", quest.getId(), task.getId(), winner.getUniqueId()); + taskProgress.setCompleted(true); } + + TaskUtils.sendTrackAdvancement(winner, quest, task, pendingTask, amount); } } } |
