From ec20c79a3da23bbe2b5e37d4451869d2562f5c1d Mon Sep 17 00:00:00 2001 From: Krakenied Date: Mon, 2 May 2022 04:19:59 +0200 Subject: Do not count non-creatures damage --- .../quests/bukkit/tasktype/type/DealDamageTaskType.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'bukkit/src/main') 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 9a711ce9..b49d2908 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 @@ -9,6 +9,7 @@ import com.leonardobishop.quests.common.player.questprogressfile.QuestProgress; 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.Creature; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -33,17 +34,18 @@ public final class DealDamageTaskType extends BukkitTaskType { ArrayList problems = new ArrayList<>(); if (TaskUtils.configValidateExists(root + ".amount", config.get("amount"), problems, "amount", super.getType())) TaskUtils.configValidateInt(root + ".amount", config.get("amount"), problems, false, true, "amount"); + TaskUtils.configValidateBoolean(root + ".allow-only-creatures", config.get("allow-only-creatures"), problems, true, "allow-only-creatures"); return problems; } @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) - public void onDamage(EntityDamageByEntityEvent e) { - if (!(e.getDamager() instanceof Player)) { + public void onDamage(EntityDamageByEntityEvent event) { + if (!(event.getDamager() instanceof Player)) { return; } - Player player = (Player) e.getDamager(); - double damage = e.getDamage(); + Player player = (Player) event.getDamager(); + double damage = event.getDamage(); if (player.hasMetadata("NPC")) return; @@ -65,6 +67,12 @@ public final class DealDamageTaskType extends BukkitTaskType { continue; } + // Do not count non-creatures damage (e.g. ArmorStands) + boolean allowOnlyCreatures = (boolean) task.getConfigValue("allow-only-creatures", true); + if (allowOnlyCreatures && !(event.getEntity() instanceof Creature)) { + continue; + } + double progressDamage; int damageNeeded = (int) task.getConfigValue("amount"); -- cgit v1.2.3-70-g09d2