diff options
Diffstat (limited to 'bukkit/src')
4 files changed, 43 insertions, 42 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java index 7415657f..dcca71de 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/BucketInteractionTaskType.java @@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.leonardobishop.quests.bukkit.util.constraint.TaskConstraintSet; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; @@ -23,13 +24,16 @@ public abstract class BucketInteractionTaskType extends BukkitTaskType { } public void onBucket(Player player, Material bucket, BukkitQuestsPlugin plugin) { - if (!player.isOnline() || player.hasMetadata("NPC") || bucket == null) return; + if (player.hasMetadata("NPC")) { + return; + } QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); + if (qPlayer == null) { + return; + } - if (qPlayer == null) return; - - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player.getPlayer(), qPlayer, this, TaskConstraintSet.ALL)) { Quest quest = pendingTask.quest(); Task task = pendingTask.task(); TaskProgress taskProgress = pendingTask.taskProgress(); diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java index d3ffe0a3..37019c8d 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DealDamageTaskType.java @@ -3,6 +3,7 @@ package com.leonardobishop.quests.bukkit.tasktype.type; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.leonardobishop.quests.bukkit.util.constraint.TaskConstraintSet; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; @@ -29,22 +30,24 @@ public final class DealDamageTaskType extends BukkitTaskType { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onDamage(EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Player)) { + final Entity damager = event.getDamager(); + if (!(damager instanceof Player player)) { return; } - Player player = (Player) event.getDamager(); - Entity entity = event.getEntity(); - double damage = event.getDamage(); - - if (player.hasMetadata("NPC")) return; + if (player.hasMetadata("NPC")) { + return; + } QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); if (qPlayer == null) { return; } - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { + Entity entity = event.getEntity(); + double damage = event.getDamage(); + + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player, qPlayer, this, TaskConstraintSet.ALL)) { Quest quest = pendingTask.quest(); Task task = pendingTask.task(); TaskProgress taskProgress = pendingTask.taskProgress(); @@ -52,20 +55,19 @@ public final class DealDamageTaskType extends BukkitTaskType { super.debug("Player damaged " + entity.getType() + " for " + damage, quest.getId(), task.getId(), player.getUniqueId()); boolean allowOnlyCreatures = TaskUtils.getConfigBoolean(task, "allow-only-creatures", true); - if (allowOnlyCreatures && !(event.getEntity() instanceof Creature)) { + if (allowOnlyCreatures && !(entity instanceof Creature)) { super.debug(entity.getType() + " is not a creature but allow-only-creatures is true, continuing...", quest.getId(), task.getId(), player.getUniqueId()); continue; } - double progressDamage = TaskUtils.getDecimalTaskProgress(taskProgress); - int damageNeeded = (int) task.getConfigValue("amount"); + int amount = (int) task.getConfigValue("amount"); + double progress = Math.min(amount, TaskUtils.getDecimalTaskProgress(taskProgress) + damage); - taskProgress.setProgress(progressDamage + damage); - super.debug("Updating task progress (now " + (progressDamage + damage) + ")", quest.getId(), task.getId(), player.getUniqueId()); + taskProgress.setProgress(progress); + super.debug("Updating task progress (now " + progress + ")", quest.getId(), task.getId(), player.getUniqueId()); - if (((double) taskProgress.getProgress()) >= (double) damageNeeded) { + if (progress >= amount) { super.debug("Marking task as complete", quest.getId(), task.getId(), player.getUniqueId()); - taskProgress.setProgress(damageNeeded); taskProgress.setCompleted(true); } } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java index b786906a..f150327d 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/DistancefromTaskType.java @@ -49,13 +49,15 @@ public final class DistancefromTaskType extends BukkitTaskType { // } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onMove(PlayerMoveEvent event) { - if (event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()) { + public void onPlayerMove(PlayerMoveEvent event) { + if (event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockY() == event.getTo().getBlockY() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()) { return; } - if (event.getPlayer().hasMetadata("NPC")) return; Player player = event.getPlayer(); + if (player.hasMetadata("NPC")) { + return; + } QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); if (qPlayer == null) { @@ -93,5 +95,4 @@ public final class DistancefromTaskType extends BukkitTaskType { } } } - } diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java index aa4709e9..a906298f 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/tasktype/type/TamingTaskType.java @@ -3,11 +3,13 @@ package com.leonardobishop.quests.bukkit.tasktype.type; import com.leonardobishop.quests.bukkit.BukkitQuestsPlugin; import com.leonardobishop.quests.bukkit.tasktype.BukkitTaskType; import com.leonardobishop.quests.bukkit.util.TaskUtils; +import com.leonardobishop.quests.bukkit.util.constraint.TaskConstraintSet; import com.leonardobishop.quests.common.player.QPlayer; import com.leonardobishop.quests.common.player.questprogressfile.TaskProgress; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; -import org.bukkit.entity.EntityType; +import org.bukkit.entity.AnimalTamer; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -28,39 +30,32 @@ public final class TamingTaskType extends BukkitTaskType { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityTame(EntityTameEvent event) { - if (!(event.getOwner() instanceof Player)) { + final AnimalTamer tamer = event.getOwner(); + if (!(tamer instanceof Player player)) { return; } - Player player = (Player) event.getOwner(); - - if (player.hasMetadata("NPC")) return; + if (player.hasMetadata("NPC")) { + return; + } QPlayer qPlayer = plugin.getPlayerManager().getPlayer(player.getUniqueId()); if (qPlayer == null) { return; } - for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player.getPlayer(), qPlayer, this, TaskUtils.TaskConstraint.WORLD)) { + final Entity entity = event.getEntity(); + + for (TaskUtils.PendingTask pendingTask : TaskUtils.getApplicableTasks(player.getPlayer(), qPlayer, this, TaskConstraintSet.ALL)) { Quest quest = pendingTask.quest(); Task task = pendingTask.task(); TaskProgress taskProgress = pendingTask.taskProgress(); super.debug("Played tamed entity", quest.getId(), task.getId(), player.getUniqueId()); - if (task.hasConfigKey("mob")) { - EntityType entityType; - try { - entityType = EntityType.valueOf((String) task.getConfigValue("mob")); - } catch (IllegalArgumentException ex) { - super.debug("Invalid entity in configuration, continuing...", quest.getId(), task.getId(), player.getUniqueId()); - continue; - } - - if (event.getEntity().getType() != entityType) { - super.debug("Tamed entity is not the correct type, continuing...", quest.getId(), task.getId(), player.getUniqueId()); - continue; - } + if (!TaskUtils.matchEntity(this, pendingTask, entity, player.getUniqueId())) { + super.debug("Continuing...", quest.getId(), task.getId(), player.getUniqueId()); + continue; } int progress = TaskUtils.incrementIntegerTaskProgress(taskProgress); @@ -74,5 +69,4 @@ public final class TamingTaskType extends BukkitTaskType { } } } - } |
