From c10fc84654ad5695db3bfa23644df4fdff870377 Mon Sep 17 00:00:00 2001 From: nicuch Date: Sun, 12 Jan 2020 01:31:00 +0200 Subject: Fix for projectiles --- .../quests/tasktypes/types/InventoryTaskType.java | 8 +------- .../tasktypes/types/MobkillingCertainTaskType.java | 15 +++++++++++--- .../quests/tasktypes/types/MobkillingTaskType.java | 23 +++++++++++++--------- .../tasktypes/types/MythicMobsKillingType.java | 15 +++++++++++--- .../tasktypes/types/PlayerkillingTaskType.java | 15 +++++++++++--- 5 files changed, 51 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java index c30aacaf..2cc52557 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/InventoryTaskType.java @@ -18,7 +18,6 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.inventory.InventoryInteractEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitRunnable; import java.util.ArrayList; import java.util.List; @@ -48,12 +47,7 @@ public final class InventoryTaskType extends TaskType { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onInventoryClick(InventoryInteractEvent event) { - new BukkitRunnable() { - @Override - public void run() { - checkInventory((Player) event.getWhoClicked()); - } - }.runTaskLater(Quests.get(), 1L); + Bukkit.getScheduler().runTaskLater(Quests.get(), () -> checkInventory((Player) event.getWhoClicked()), 1L); } @SuppressWarnings("deprecation") diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java index 39107702..2c80bfe9 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingCertainTaskType.java @@ -13,9 +13,11 @@ import org.bukkit.ChatColor; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.projectiles.ProjectileSource; import java.util.ArrayList; import java.util.List; @@ -45,13 +47,20 @@ public final class MobkillingCertainTaskType extends TaskType { return; } + if (killer instanceof Projectile) { + ProjectileSource source = ((Projectile) killer).getShooter(); + if (source == null) + return; + if (source instanceof Player) + killer = (Entity) source; + else return; + } + if (killer == null) { return; } - Player player = event.getEntity().getKiller(); - - QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId()); + QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(killer.getUniqueId()); QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); for (Quest quest : super.getRegisteredQuests()) { diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java index 5cb627eb..d4e286de 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MobkillingTaskType.java @@ -9,13 +9,11 @@ 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; -import org.bukkit.entity.Animals; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Monster; -import org.bukkit.entity.Player; +import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.projectiles.ProjectileSource; import java.util.ArrayList; import java.util.List; @@ -37,20 +35,27 @@ public final class MobkillingTaskType extends TaskType { @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onMobKill(EntityDeathEvent event) { - Entity killer = event.getEntity().getKiller(); + Entity killer = event.getEntity().getKiller(); //The killer is an entity, and projectiles counts as entities too. Entity mob = event.getEntity(); - if (mob instanceof Player) { + if (mob == null || mob instanceof Player) { return; } + if (killer instanceof Projectile) { + ProjectileSource source = ((Projectile) killer).getShooter(); + if (source == null) + return; + if (source instanceof Player) + killer = (Entity) source; + else return; + } + if (killer == null) { return; } - Player player = event.getEntity().getKiller(); - - QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId()); + QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(killer.getUniqueId()); QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); for (Quest quest : super.getRegisteredQuests()) { diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MythicMobsKillingType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MythicMobsKillingType.java index 1964a228..9f356480 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MythicMobsKillingType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/MythicMobsKillingType.java @@ -12,8 +12,10 @@ import com.leonardobishop.quests.quests.tasktypes.TaskType; import io.lumine.xikage.mythicmobs.api.bukkit.events.MythicMobDeathEvent; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.bukkit.projectiles.ProjectileSource; import java.util.ArrayList; import java.util.List; @@ -42,15 +44,22 @@ public final class MythicMobsKillingType extends TaskType { return; } + if (killer instanceof Projectile) { + ProjectileSource source = ((Projectile) killer).getShooter(); + if (source == null) + return; + if (source instanceof Player) + killer = (Entity) source; + else return; + } + if (killer == null) { return; } - Player player = (Player) event.getKiller(); - String mobName = event.getMobType().getInternalName(); - QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId()); + QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(killer.getUniqueId()); QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); for (Quest quest : super.getRegisteredQuests()) { diff --git a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java index 06006fa7..b24bf867 100644 --- a/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java +++ b/src/main/java/com/leonardobishop/quests/quests/tasktypes/types/PlayerkillingTaskType.java @@ -11,9 +11,11 @@ import com.leonardobishop.quests.quests.tasktypes.ConfigValue; import com.leonardobishop.quests.quests.tasktypes.TaskType; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.projectiles.ProjectileSource; import java.util.ArrayList; import java.util.List; @@ -42,13 +44,20 @@ public final class PlayerkillingTaskType extends TaskType { return; } + if (killer instanceof Projectile) { + ProjectileSource source = ((Projectile) killer).getShooter(); + if (source == null) + return; + if (source instanceof Player) + killer = (Entity) source; + else return; + } + if (killer == null) { return; } - Player player = event.getEntity().getKiller(); - - QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(player.getUniqueId()); + QPlayer qPlayer = QuestsAPI.getPlayerManager().getPlayer(killer.getUniqueId()); QuestProgressFile questProgressFile = qPlayer.getQuestProgressFile(); for (Quest quest : super.getRegisteredQuests()) { -- cgit v1.2.3-70-g09d2