Continued rework

This commit is contained in:
Auxilor
2021-04-30 21:51:32 +01:00
parent 04b3eb51dc
commit dcf04045a3
4 changed files with 32 additions and 20 deletions

View File

@@ -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) {

View File

@@ -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));
}
}

View File

@@ -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;
}
}

View File

@@ -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);