From a72699a6e46f88bf3ef9a3b7ae8fb67a54616909 Mon Sep 17 00:00:00 2001 From: Aria Date: Thu, 12 Dec 2019 21:35:21 +0100 Subject: [PATCH] Added an option to prevent spawner mobs from giving xp --- src/main/java/net/Indyuce/mmocore/MMOCore.java | 3 +++ .../source/KillMobExperienceSource.java | 1 + .../mmocore/listener/option/NoSpawnerEXP.java | 17 +++++++++++++++++ src/main/resources/config.yml | 3 +++ 4 files changed, 24 insertions(+) create mode 100644 src/main/java/net/Indyuce/mmocore/listener/option/NoSpawnerEXP.java diff --git a/src/main/java/net/Indyuce/mmocore/MMOCore.java b/src/main/java/net/Indyuce/mmocore/MMOCore.java index 4d0dd3a8..41427502 100644 --- a/src/main/java/net/Indyuce/mmocore/MMOCore.java +++ b/src/main/java/net/Indyuce/mmocore/MMOCore.java @@ -272,6 +272,9 @@ public class MMOCore extends JavaPlugin { if (getConfig().getBoolean("health-scale.enabled")) Bukkit.getPluginManager().registerEvents(new HealthScale(), this); + if (getConfig().getBoolean("prevent-spawner-xp")) + Bukkit.getPluginManager().registerEvents(new HealthScale(), this); + if (getConfig().getBoolean("death-exp-loss.enabled")) Bukkit.getPluginManager().registerEvents(new DeathExperienceLoss(), this); diff --git a/src/main/java/net/Indyuce/mmocore/api/experience/source/KillMobExperienceSource.java b/src/main/java/net/Indyuce/mmocore/api/experience/source/KillMobExperienceSource.java index c7cce361..be2a2ea0 100644 --- a/src/main/java/net/Indyuce/mmocore/api/experience/source/KillMobExperienceSource.java +++ b/src/main/java/net/Indyuce/mmocore/api/experience/source/KillMobExperienceSource.java @@ -29,6 +29,7 @@ public class KillMobExperienceSource extends SpecificExperienceSource { @EventHandler public void a(EntityKillEntityEvent event) { if (event.getEntity() instanceof Player && !event.getEntity().hasMetadata("NPC")) { + if(event.getTarget().hasMetadata("spawner_spawned")) return; PlayerData data = PlayerData.get((Player) event.getEntity()); for (KillMobExperienceSource source : getSources()) diff --git a/src/main/java/net/Indyuce/mmocore/listener/option/NoSpawnerEXP.java b/src/main/java/net/Indyuce/mmocore/listener/option/NoSpawnerEXP.java new file mode 100644 index 00000000..192644f7 --- /dev/null +++ b/src/main/java/net/Indyuce/mmocore/listener/option/NoSpawnerEXP.java @@ -0,0 +1,17 @@ +package net.Indyuce.mmocore.listener.option; + +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.CreatureSpawnEvent; +import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; +import org.bukkit.metadata.FixedMetadataValue; + +import net.Indyuce.mmocore.MMOCore; + +public class NoSpawnerEXP implements Listener { + @EventHandler + public void a(CreatureSpawnEvent event) { + if(event.getSpawnReason() == SpawnReason.SPAWNER) + event.getEntity().setMetadata("spawner_spawned", new FixedMetadataValue(MMOCore.plugin, true)); + } +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index c945fa7c..aecea31b 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -98,6 +98,9 @@ hotbar-swap: true # This replaces anvil inputs by chat inputs. use-chat-input: true +# Prevents mobs spawned from spawners from giving XP points. +prevent-spawner-xp: true + # Change this to the name of the color you want for # the different resource bar placeholders resource-bar-colors: