diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java index e1cd6b0..0bd6711 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/Talisman.java @@ -1,5 +1,6 @@ package com.willfp.talismans.talismans; +import com.google.common.collect.ImmutableSet; import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.Prerequisite; import com.willfp.talismans.TalismansPlugin; @@ -153,6 +154,15 @@ public abstract class Talisman implements Listener, Watcher { return levels.get(level); } + /** + * Get all level. + * + * @return The levels. + */ + public final Set getLevels() { + return ImmutableSet.copyOf(levels.values()); + } + @Override public boolean equals(final Object o) { if (this == o) { diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/SyncTalismanEquipEventTask.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/SyncTalismanEquipEventTask.java index 5de5e97..c86d9d8 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/SyncTalismanEquipEventTask.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/SyncTalismanEquipEventTask.java @@ -1,7 +1,7 @@ package com.willfp.talismans.talismans.util.equipevent; import com.willfp.eco.core.EcoPlugin; -import com.willfp.talismans.talismans.Talisman; +import com.willfp.talismans.talismans.TalismanLevel; import com.willfp.talismans.talismans.util.TalismanChecks; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -18,7 +18,7 @@ public class SyncTalismanEquipEventTask { /** * Cache for the scheduler. */ - private static final Map> syncCache = Collections.synchronizedMap(new HashMap<>()); + private static final Map> syncCache = Collections.synchronizedMap(new HashMap<>()); /** * Schedule sync repeating updater task. @@ -30,16 +30,16 @@ public class SyncTalismanEquipEventTask { for (Player player : plugin.getServer().getOnlinePlayers()) { UUID uuid = player.getUniqueId(); - Set buildingBefore = syncCache.get(uuid); + Set buildingBefore = syncCache.get(uuid); if (buildingBefore == null) { buildingBefore = new HashSet<>(); } - Set before = buildingBefore; + Set before = buildingBefore; - Set after = TalismanChecks.getTalismansOnPlayer(player); + Set after = TalismanChecks.getTalismansOnPlayer(player); - for (Talisman talisman : new HashSet<>(before)) { + for (TalismanLevel talisman : new HashSet<>(before)) { if (after.contains(talisman)) { before.remove(talisman); after.remove(talisman); @@ -49,14 +49,14 @@ public class SyncTalismanEquipEventTask { syncCache.put(uuid, after); after.removeAll(before); - for (Talisman talisman : after) { - if (talisman.isEnabled()) { + for (TalismanLevel talisman : after) { + if (talisman.getTalisman().isEnabled()) { Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.EQUIP)); } } before.removeAll(after); - for (Talisman talisman : before) { + for (TalismanLevel talisman : before) { Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.UNEQUIP)); } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/TalismanEquipEvent.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/TalismanEquipEvent.java index 991fce5..9be80c8 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/TalismanEquipEvent.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/TalismanEquipEvent.java @@ -1,6 +1,6 @@ package com.willfp.talismans.talismans.util.equipevent; -import com.willfp.talismans.talismans.Talisman; +import com.willfp.talismans.talismans.TalismanLevel; import lombok.Getter; import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; @@ -17,7 +17,7 @@ public class TalismanEquipEvent extends PlayerEvent { * The talisman. */ @Getter - private final Talisman talisman; + private final TalismanLevel talisman; /** * If the event is from being equipped or unequipped. @@ -33,7 +33,7 @@ public class TalismanEquipEvent extends PlayerEvent { * @param type The equip type. */ public TalismanEquipEvent(@NotNull final Player who, - @NotNull final Talisman talisman, + @NotNull final TalismanLevel talisman, @NotNull final EquipType type) { super(who); this.talisman = talisman; @@ -49,5 +49,4 @@ public class TalismanEquipEvent extends PlayerEvent { public static HandlerList getHandlerList() { return HANDLER_LIST; } - } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/TalismanEquipEventListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/TalismanEquipEventListeners.java index 8da4159..45afc8c 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/TalismanEquipEventListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/TalismanEquipEventListeners.java @@ -3,6 +3,7 @@ package com.willfp.talismans.talismans.util.equipevent; import com.willfp.eco.core.EcoPlugin; import com.willfp.eco.core.PluginDependent; import com.willfp.talismans.talismans.Talisman; +import com.willfp.talismans.talismans.TalismanLevel; import com.willfp.talismans.talismans.Talismans; import com.willfp.talismans.talismans.util.TalismanChecks; import com.willfp.talismans.talismans.util.TalismanUtils; @@ -73,7 +74,9 @@ public class TalismanEquipEventListeners extends PluginDependent implements List Player player = event.getPlayer(); for (Talisman talisman : Talismans.values()) { - Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.UNEQUIP)); + for (TalismanLevel level : talisman.getLevels()) { + Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, level, EquipType.UNEQUIP)); + } } } @@ -130,12 +133,12 @@ public class TalismanEquipEventListeners extends PluginDependent implements List private void refreshPlayer(@NotNull final Player player, @NotNull final ItemStack... extra) { - Set inCache = TalismanChecks.getTalismansOnPlayer(player, false, extra); + Set inCache = TalismanChecks.getTalismansOnPlayer(player, false, extra); this.getPlugin().getScheduler().runLater(() -> { - Set newSet = TalismanChecks.getTalismansOnPlayer(player, false); + Set newSet = TalismanChecks.getTalismansOnPlayer(player, false); - for (Talisman talisman : new HashSet<>(newSet)) { + for (TalismanLevel talisman : new HashSet<>(newSet)) { if (inCache.contains(talisman)) { newSet.remove(talisman); inCache.remove(talisman); @@ -144,14 +147,14 @@ public class TalismanEquipEventListeners extends PluginDependent implements List newSet.removeAll(inCache); - for (Talisman talisman : newSet) { - if (talisman.isEnabled()) { + for (TalismanLevel talisman : newSet) { + if (talisman.getTalisman().isEnabled()) { Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.EQUIP)); } } inCache.removeAll(newSet); - for (Talisman talisman : inCache) { + for (TalismanLevel talisman : inCache) { Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.UNEQUIP)); } }, 1);