diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java index 600b9a8..bf8a835 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/ReforgesPlugin.java @@ -17,6 +17,7 @@ import com.willfp.reforges.reforges.Reforge; import com.willfp.reforges.reforges.Reforges; import com.willfp.reforges.reforges.util.ReforgeArgParser; import com.willfp.reforges.reforges.util.ReforgeEnableListeners; +import com.willfp.reforges.reforges.util.ReforgeLookup; import com.willfp.reforges.util.AntiPlaceListener; import com.willfp.reforges.util.DiscoverRecipeListener; import lombok.Getter; @@ -56,6 +57,8 @@ public class ReforgesPlugin extends EcoPlugin { this.targetYml = new TargetYml(this); this.reforgesJson = new ReforgesJson(this); instance = this; + + LibReforge.registerHolderProvider(player -> new ArrayList<>(ReforgeLookup.provideReforges(player))); } @Override diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeEnableListeners.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeEnableListeners.java index 0c84c1f..1674700 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeEnableListeners.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeEnableListeners.java @@ -97,6 +97,8 @@ public class ReforgeEnableListeners extends PluginDependent implement @EventHandler public void onChangeSlot(@NotNull final PlayerItemHeldEvent event) { refreshPlayer(event.getPlayer()); + + this.getPlugin().getScheduler().run(() -> refreshPlayer(event.getPlayer())); } /** @@ -133,6 +135,7 @@ public class ReforgeEnableListeners extends PluginDependent implement } private void refreshPlayer(@NotNull final Player player) { + ReforgeLookup.clearCache(player); LibReforgeUtils.updateEffects(player); } } \ No newline at end of file diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeLookup.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeLookup.java index b2f6d41..73c0eea 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeLookup.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/ReforgeLookup.java @@ -1,7 +1,6 @@ package com.willfp.reforges.reforges.util; import com.willfp.eco.core.EcoPlugin; -import com.willfp.libreforge.LibReforge; import com.willfp.reforges.ReforgesPlugin; import com.willfp.reforges.reforges.Reforge; import com.willfp.reforges.reforges.meta.ReforgeTarget; @@ -119,6 +118,16 @@ public class ReforgeLookup { return found; } + /** + * Clear cache. + * + * @param player The player. + */ + public static void clearCache(@NotNull final Player player) { + ITEM_CACHE.remove(player.getUniqueId()); + REFORGE_CACHE.remove(player.getUniqueId()); + } + static { registerProvider(player -> Map.of( player.getInventory().getItemInMainHand(), @@ -135,7 +144,5 @@ public class ReforgeLookup { } return items; }); - - LibReforge.registerHolderProvider(player -> new ArrayList<>(provideReforges(player))); } } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java b/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java deleted file mode 100644 index 777293d..0000000 --- a/eco-core/core-plugin/src/main/java/com/willfp/reforges/reforges/util/Watcher.java +++ /dev/null @@ -1,209 +0,0 @@ -package com.willfp.reforges.reforges.util; - -import com.willfp.eco.core.config.interfaces.JSONConfig; -import com.willfp.eco.core.events.EntityDeathByEntityEvent; -import org.bukkit.block.Block; -import org.bukkit.entity.Arrow; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Projectile; -import org.bukkit.entity.Trident; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; -import org.bukkit.event.player.PlayerItemDamageEvent; -import org.bukkit.event.player.PlayerMoveEvent; -import org.jetbrains.annotations.NotNull; - -@SuppressWarnings("unused") -public interface Watcher { - - /** - * Called when a player breaks a block. - * - * @param player The player. - * @param block The block that was broken. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onBlockBreak(@NotNull final Player player, - @NotNull final Block block, - @NotNull final BlockBreakEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity attacks another entity via any mean. - * - * @param attacker The attacker. - * @param victim The victim. - * @param event The event. - * @param config The effect config. - */ - default void onAnyDamage(@NotNull final Player attacker, - @NotNull final LivingEntity victim, - @NotNull final EntityDamageByEntityEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity shoots another entity with an arrow. - * - * @param attacker The shooter. - * @param victim The victim. - * @param arrow The arrow entity. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onArrowDamage(@NotNull final Player attacker, - @NotNull final LivingEntity victim, - @NotNull final Arrow arrow, - @NotNull final EntityDamageByEntityEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity damages another entity with a trident throw. - * - * @param attacker The shooter. - * @param victim The victim. - * @param trident The trident entity. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onTridentDamage(@NotNull final Player attacker, - @NotNull final LivingEntity victim, - @NotNull final Trident trident, - @NotNull final EntityDamageByEntityEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when a player jumps. - * - * @param player The player. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onJump(@NotNull final Player player, - @NotNull final PlayerMoveEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity attacks another entity with a melee attack. - * - * @param attacker The attacker. - * @param victim The victim. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onMeleeAttack(@NotNull final Player attacker, - @NotNull final LivingEntity victim, - @NotNull final EntityDamageByEntityEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity shoots a projectile. - * - * @param shooter The entity that shot the bow. - * @param projectile The projectile that was shot. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onProjectileLaunch(@NotNull final Player shooter, - @NotNull final Projectile projectile, - @NotNull final ProjectileLaunchEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity takes fall damage. - * - * @param faller The entity that took the fall damage. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onFallDamage(@NotNull final Player faller, - @NotNull final EntityDamageEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when a projectile hits a block or entity. - * - * @param shooter The entity that shot the arrow. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onProjectileHit(@NotNull final Player shooter, - @NotNull final ProjectileHitEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity kills another entity. - * - * @param killer The killer. - * @param victim The victim. - * @param event The event. - * @param config The effect config. - */ - default void onKill(@NotNull final Player killer, - @NotNull final LivingEntity victim, - @NotNull final EntityDeathByEntityEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity takes damage wearing armor. - * - * @param victim The entity that took damage. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onDamageWearingArmor(@NotNull final Player victim, - @NotNull final EntityDamageEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an entity throws a trident. - * - * @param shooter The entity that threw the trident. - * @param trident The trident that was thrown. - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onTridentLaunch(@NotNull final Player shooter, - @NotNull final Trident trident, - @NotNull final ProjectileLaunchEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } - - /** - * Called when an item takes durability damage. - * - * @param event The event that called this watcher. - * @param config The effect config. - */ - default void onDurabilityDamage(@NotNull final PlayerItemDamageEvent event, - @NotNull final JSONConfig config) { - // Empty default as effects only override required watchers. - } -}