From 69d1a00f85c1cd7402a3d05b12e2a150e1255078 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Sat, 28 Mar 2026 22:18:59 +0100 Subject: [PATCH] fix effect --- .../core/listeners/EquipableItemListener.java | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/fr/openmc/core/listeners/EquipableItemListener.java b/src/main/java/fr/openmc/core/listeners/EquipableItemListener.java index 913c8ae96..9b67bcb06 100644 --- a/src/main/java/fr/openmc/core/listeners/EquipableItemListener.java +++ b/src/main/java/fr/openmc/core/listeners/EquipableItemListener.java @@ -3,12 +3,9 @@ import fr.openmc.core.OMCPlugin; import fr.openmc.core.events.ArmorEquipEvent; import fr.openmc.core.features.dream.DreamUtils; -import fr.openmc.core.features.dream.registries.DreamItemRegistry; import fr.openmc.core.registry.items.CustomItem; import fr.openmc.core.registry.items.CustomItemRegistry; import fr.openmc.core.registry.items.options.EquipableItem; -import fr.openmc.core.utils.ArmorType; -import fr.openmc.core.utils.ItemUtils; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,11 +17,12 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; -import java.util.HashMap; -import java.util.Map; +import java.util.*; public class EquipableItemListener implements Listener { + private final Map> appliedEffectsByPlayer = new HashMap<>(); + @EventHandler public void onEquip(ArmorEquipEvent event) { if (event.getType() == null) return; @@ -57,6 +55,8 @@ public void onQuit(PlayerQuitEvent event) { equipable.removeEffects(player); } } + + appliedEffectsByPlayer.remove(player.getUniqueId()); } @EventHandler @@ -76,6 +76,15 @@ public void onDreamTeleport(PlayerTeleportEvent event) { } private void recalc(Player player, ItemStack oldPiece) { + UUID playerId = player.getUniqueId(); + + Set previouslyApplied = appliedEffectsByPlayer.get(playerId); + if (previouslyApplied != null) { + for (PotionEffectType type : previouslyApplied) { + player.removePotionEffect(type); + } + } + if (oldPiece != null && !oldPiece.getType().isAir()) { CustomItem customItem = CustomItemRegistry.getByItemStack(oldPiece); @@ -101,6 +110,8 @@ private void recalc(Player player, ItemStack oldPiece) { } } + Set newApplied = new HashSet<>(); + for (var entry : effects.entrySet()) { PotionEffectType type = entry.getKey(); int amplifier = entry.getValue(); @@ -115,6 +126,10 @@ private void recalc(Player player, ItemStack oldPiece) { true ) ); + + newApplied.add(type); } + + appliedEffectsByPlayer.put(playerId, newApplied); } } \ No newline at end of file