diff options
| author | nicuch <nicuch100@gmail.com> | 2020-01-12 01:31:00 +0200 |
|---|---|---|
| committer | nicuch <nicuch100@gmail.com> | 2020-01-12 01:31:00 +0200 |
| commit | c10fc84654ad5695db3bfa23644df4fdff870377 (patch) | |
| tree | feb53903db140dd9ad2f271aed406bd87ae09a2a /src/main | |
| parent | 31cad8636d57a3dd3576ffc5b37aea30a71457b6 (diff) | |
Fix for projectiles
Diffstat (limited to 'src/main')
5 files changed, 51 insertions, 25 deletions
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()) { |
