Fixed exp resetting on death

This commit is contained in:
Jules 2023-10-15 18:43:06 +02:00
parent dbe5aa5fab
commit 160c5d5699

View File

@ -8,7 +8,9 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.enchantment.EnchantItemEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerExpChangeEvent;
import org.bukkit.event.player.PlayerRespawnEvent;
public class VanillaExperienceOverride implements Listener {
@ -16,10 +18,20 @@ public class VanillaExperienceOverride implements Listener {
* When picking up exp orbs or any action like that
*/
@EventHandler(priority = EventPriority.HIGHEST)
public void a(PlayerExpChangeEvent event) {
public void cancelChange(PlayerExpChangeEvent event) {
event.setAmount(0);
}
@EventHandler(priority = EventPriority.HIGHEST)
public void cancelDrop(PlayerDeathEvent event) {
event.setDroppedExp(0);
}
@EventHandler(priority = EventPriority.HIGHEST)
public void cancelChange(PlayerRespawnEvent event) {
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> PlayerData.get(event.getPlayer()).refreshVanillaExp());
}
/**
* This event is not supported by the expChangeEvent. Since the event is
* actually called before applying the enchant and consuming levels, we must
@ -28,7 +40,7 @@ public class VanillaExperienceOverride implements Listener {
* {@link EnchantItemEvent#setExpLevelCost(int)} does NOT work
*/
@EventHandler
public void b(EnchantItemEvent event) {
public void cancelChange(EnchantItemEvent event) {
Player player = event.getEnchanter();
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> player.setLevel(PlayerData.get(player).getLevel()));
}