diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/TalismansPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/TalismansPlugin.java
index 5ad0b57..4647349 100644
--- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/TalismansPlugin.java
+++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/TalismansPlugin.java
@@ -20,6 +20,7 @@ import com.willfp.talismans.talismans.util.BlockPlaceListener;
import com.willfp.talismans.talismans.util.TalismanChecks;
import com.willfp.talismans.talismans.util.TalismanCraftListener;
import com.willfp.talismans.talismans.util.WatcherTriggers;
+import com.willfp.talismans.talismans.util.equipevent.SyncTalismanEquipEventTask;
import com.willfp.talismans.talismans.util.equipevent.TalismanEquipEventListeners;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
@@ -29,13 +30,6 @@ import java.util.List;
@SuppressWarnings("unused")
public class TalismansPlugin extends AbstractEcoPlugin {
- /**
- * Listeners to call {@link com.willfp.talismans.talismans.util.equipevent.TalismanEquipEvent}.
- *
- * Instance stored to reschedule timer.
- */
- private final TalismanEquipEventListeners talismanEquipEventListeners = new TalismanEquipEventListeners(this);
-
/**
* Internal constructor called by bukkit on plugin load.
*/
@@ -94,8 +88,7 @@ public class TalismansPlugin extends AbstractEcoPlugin {
}
}, 1);
});
-
- talismanEquipEventListeners.scheduleAutocheck();
+ SyncTalismanEquipEventTask.scheduleAutocheck(this);
}
/**
@@ -158,7 +151,7 @@ public class TalismansPlugin extends AbstractEcoPlugin {
new WatcherTriggers(this),
new BlockPlaceListener(),
new TalismanCraftListener(),
- talismanEquipEventListeners
+ new TalismanEquipEventListeners(this)
);
}
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/relic/SpeedRelic.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/relic/SpeedRelic.java
index e285a9d..a7dd35a 100644
--- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/relic/SpeedRelic.java
+++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/relic/SpeedRelic.java
@@ -15,7 +15,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.UUID;
public class SpeedRelic extends Talisman {
- private static final UUID MODIFIER_UUID = UUID.randomUUID();
+ private static final UUID MODIFIER_UUID = UUID.nameUUIDFromBytes("speed_relic".getBytes());
private static AttributeModifier MODIFIER = new AttributeModifier(MODIFIER_UUID, "speed_relic", 0.05, AttributeModifier.Operation.MULTIPLY_SCALAR_1);
public SpeedRelic() {
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/ring/SpeedRing.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/ring/SpeedRing.java
index f2afe3d..629b055 100644
--- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/ring/SpeedRing.java
+++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/ring/SpeedRing.java
@@ -15,7 +15,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.UUID;
public class SpeedRing extends Talisman {
- private static final UUID MODIFIER_UUID = UUID.randomUUID();
+ private static final UUID MODIFIER_UUID = UUID.nameUUIDFromBytes("speed_ring".getBytes());
private static AttributeModifier MODIFIER = new AttributeModifier(MODIFIER_UUID, "speed_ring", 0.05, AttributeModifier.Operation.MULTIPLY_SCALAR_1);
public SpeedRing() {
diff --git a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/talisman/SpeedTalisman.java b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/talisman/SpeedTalisman.java
index 49f8ec9..9879e83 100644
--- a/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/talisman/SpeedTalisman.java
+++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/talismans/talisman/SpeedTalisman.java
@@ -15,7 +15,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.UUID;
public class SpeedTalisman extends Talisman {
- private static final UUID MODIFIER_UUID = UUID.randomUUID();
+ private static final UUID MODIFIER_UUID = UUID.nameUUIDFromBytes("speed_talisman".getBytes());
private static AttributeModifier MODIFIER = new AttributeModifier(MODIFIER_UUID, "speed_talisman", 0.05, AttributeModifier.Operation.MULTIPLY_SCALAR_1);
public SpeedTalisman() {
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
new file mode 100644
index 0000000..a616c78
--- /dev/null
+++ b/eco-core/core-plugin/src/main/java/com/willfp/talismans/talismans/util/equipevent/SyncTalismanEquipEventTask.java
@@ -0,0 +1,63 @@
+package com.willfp.talismans.talismans.util.equipevent;
+
+import com.willfp.eco.util.plugin.AbstractEcoPlugin;
+import com.willfp.talismans.talismans.Talisman;
+import com.willfp.talismans.talismans.util.TalismanChecks;
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+
+public class SyncTalismanEquipEventTask {
+ /**
+ * Cache for the scheduler.
+ */
+ private static final Map> syncCache = Collections.synchronizedMap(new HashMap<>());
+
+ /**
+ * Schedule sync repeating updater task.
+ *
+ * @param plugin The plugin to schedule for.
+ */
+ public static void scheduleAutocheck(@NotNull final AbstractEcoPlugin plugin) {
+ plugin.getScheduler().syncRepeating(() -> {
+ for (Player player : plugin.getServer().getOnlinePlayers()) {
+ UUID uuid = player.getUniqueId();
+
+ Set buildingBefore = syncCache.get(uuid);
+ if (buildingBefore == null) {
+ buildingBefore = new HashSet<>();
+ }
+
+ Set before = buildingBefore;
+
+ Set after = TalismanChecks.getTalismansOnPlayer(player);
+
+ for (Talisman talisman : new HashSet<>(before)) {
+ if (after.contains(talisman)) {
+ before.remove(talisman);
+ after.remove(talisman);
+ }
+ }
+
+ syncCache.put(uuid, after);
+
+ after.removeAll(before);
+ for (Talisman talisman : after) {
+ Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.EQUIP));
+ }
+
+ before.removeAll(after);
+ for (Talisman talisman : before) {
+ Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.UNEQUIP));
+ }
+ }
+ }, 80, 80);
+ }
+}
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 1230a39..77a2fd8 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
@@ -18,16 +18,10 @@ import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
-import java.util.UUID;
public class TalismanEquipEventListeners extends PluginDependent implements Listener {
- private final Map> syncCache = Collections.synchronizedMap(new HashMap<>());
-
/**
* Initialize new listeners and link them to a plugin.
*
@@ -117,9 +111,17 @@ public class TalismanEquipEventListeners extends PluginDependent implements List
Set inCache = TalismanChecks.getTalismansOnPlayer(player, false, extra);
this.getPlugin().getScheduler().runLater(() -> {
- Set newSet = TalismanChecks.getTalismansOnPlayer(player, false, extra);
+ Set newSet = TalismanChecks.getTalismansOnPlayer(player, false);
+
+ for (Talisman talisman : new HashSet<>(newSet)) {
+ if (inCache.contains(talisman)) {
+ newSet.remove(talisman);
+ inCache.remove(talisman);
+ }
+ }
newSet.removeAll(inCache);
+
for (Talisman talisman : newSet) {
Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.EQUIP));
}
@@ -130,34 +132,4 @@ public class TalismanEquipEventListeners extends PluginDependent implements List
}
}, 1);
}
-
- /**
- * Schedule sync repeating updater task.
- */
- public void scheduleAutocheck() {
- this.getPlugin().getScheduler().syncRepeating(() -> {
- for (Player player : this.getPlugin().getServer().getOnlinePlayers()) {
- UUID uuid = player.getUniqueId();
-
- Set before = syncCache.get(uuid);
- if (before == null) {
- before = new HashSet<>();
- }
-
- Set after = TalismanChecks.getTalismansOnPlayer(player);
-
- syncCache.put(uuid, after);
-
- after.removeAll(before);
- for (Talisman talisman : after) {
- Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.EQUIP));
- }
-
- before.removeAll(after);
- for (Talisman talisman : before) {
- Bukkit.getPluginManager().callEvent(new TalismanEquipEvent(player, talisman, EquipType.UNEQUIP));
- }
- }
- }, 80, 80);
- }
}
diff --git a/eco-core/core-plugin/src/main/resources/talismans/relic/speedrelic.yml b/eco-core/core-plugin/src/main/resources/talismans/relic/speedrelic.yml
index f5a7c7f..47706fd 100644
--- a/eco-core/core-plugin/src/main/resources/talismans/relic/speedrelic.yml
+++ b/eco-core/core-plugin/src/main/resources/talismans/relic/speedrelic.yml
@@ -1,5 +1,5 @@
name: "Speed Relic"
-description: Move 40% faster.
+description: Move 25% faster.
enabled: true
obtaining:
@@ -24,4 +24,4 @@ general-config:
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDRiYTRhYjRmOTNiODJlNjE0MTI4OTgwMWMzOWUwYmMyNzBjYmU1MTc5ZGY3NmU4NWI1NDMwNmMyNzhjMTdkYSJ9fX0=
config:
- percentage-bonus: 40
\ No newline at end of file
+ percentage-bonus: 25
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/resources/talismans/ring/speedring.yml b/eco-core/core-plugin/src/main/resources/talismans/ring/speedring.yml
index cfa004f..10bd3da 100644
--- a/eco-core/core-plugin/src/main/resources/talismans/ring/speedring.yml
+++ b/eco-core/core-plugin/src/main/resources/talismans/ring/speedring.yml
@@ -1,5 +1,5 @@
name: "Speed Ring"
-description: Move 25% faster.
+description: Move 10 faster.
enabled: true
obtaining:
@@ -24,4 +24,4 @@ general-config:
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTNjZTc2NjAyZDNmZWM3YzAyNzNkYTYwMDA5MDA3YmU0MTQwYWM5ZmFjMDM0MTQ1MGMwNzU3ZTUzZDc1MTU3NyJ9fX0=
config:
- percentage-bonus: 25
\ No newline at end of file
+ percentage-bonus: 10
\ No newline at end of file
diff --git a/eco-core/core-plugin/src/main/resources/talismans/talisman/speedtalisman.yml b/eco-core/core-plugin/src/main/resources/talismans/talisman/speedtalisman.yml
index 4e24740..bf475f0 100644
--- a/eco-core/core-plugin/src/main/resources/talismans/talisman/speedtalisman.yml
+++ b/eco-core/core-plugin/src/main/resources/talismans/talisman/speedtalisman.yml
@@ -1,5 +1,5 @@
name: "Speed Talisman"
-description: Move 10% faster.
+description: Move 5% faster.
enabled: true
obtaining:
@@ -24,4 +24,4 @@ general-config:
texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODYyNGJhY2I1ZjE5ODZlNjQ3N2FiY2U0YWU3ZGNhMTgyMGE1MjYwYjYyMzNiNTViYTFkOWJhOTM2Yzg0YiJ9fX0=
config:
- percentage-bonus: 10
\ No newline at end of file
+ percentage-bonus: 5
\ No newline at end of file