Continued rework
This commit is contained in:
@@ -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<TalismanLevel> getLevels() {
|
||||
return ImmutableSet.copyOf(levels.values());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object o) {
|
||||
if (this == o) {
|
||||
|
||||
@@ -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<UUID, Set<Talisman>> syncCache = Collections.synchronizedMap(new HashMap<>());
|
||||
private static final Map<UUID, Set<TalismanLevel>> 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<Talisman> buildingBefore = syncCache.get(uuid);
|
||||
Set<TalismanLevel> buildingBefore = syncCache.get(uuid);
|
||||
if (buildingBefore == null) {
|
||||
buildingBefore = new HashSet<>();
|
||||
}
|
||||
|
||||
Set<Talisman> before = buildingBefore;
|
||||
Set<TalismanLevel> before = buildingBefore;
|
||||
|
||||
Set<Talisman> after = TalismanChecks.getTalismansOnPlayer(player);
|
||||
Set<TalismanLevel> 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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<Talisman> inCache = TalismanChecks.getTalismansOnPlayer(player, false, extra);
|
||||
Set<TalismanLevel> inCache = TalismanChecks.getTalismansOnPlayer(player, false, extra);
|
||||
|
||||
this.getPlugin().getScheduler().runLater(() -> {
|
||||
Set<Talisman> newSet = TalismanChecks.getTalismansOnPlayer(player, false);
|
||||
Set<TalismanLevel> 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);
|
||||
|
||||
Reference in New Issue
Block a user