From d9405e3e2f3f4d911e4e703f9cbfe162bd106ec7 Mon Sep 17 00:00:00 2001 From: JasperLorelai Date: Tue, 8 Sep 2026 20:44:24 +0200 Subject: [PATCH] feat: Cleanse RewindSpell --- .../spells/targeted/RewindSpell.java | 14 ++++++++ .../targeted/cleanse/RewindSpellCleanser.java | 35 +++++++++++++++++++ .../cleanse/util/CleanserManager.java | 1 + 3 files changed, 50 insertions(+) create mode 100644 core/src/main/java/com/nisovin/magicspells/spells/targeted/cleanse/RewindSpellCleanser.java diff --git a/core/src/main/java/com/nisovin/magicspells/spells/targeted/RewindSpell.java b/core/src/main/java/com/nisovin/magicspells/spells/targeted/RewindSpell.java index 436129e3a..016e5dccf 100644 --- a/core/src/main/java/com/nisovin/magicspells/spells/targeted/RewindSpell.java +++ b/core/src/main/java/com/nisovin/magicspells/spells/targeted/RewindSpell.java @@ -101,6 +101,20 @@ public void onSpellCast(SpellCastEvent e) { } } + public boolean isRewinding(LivingEntity target) { + for (Rewinder rewinder : new HashSet<>(entities.values())) + if (rewinder.data.target().equals(target)) + return true; + + return false; + } + + public void rewindAll(LivingEntity target) { + for (Rewinder rewinder : new HashSet<>(entities.values())) + if (rewinder.data.target().equals(target)) + rewinder.rewind(true); + } + private class Rewinder implements Runnable { private final SpellData data; diff --git a/core/src/main/java/com/nisovin/magicspells/spells/targeted/cleanse/RewindSpellCleanser.java b/core/src/main/java/com/nisovin/magicspells/spells/targeted/cleanse/RewindSpellCleanser.java new file mode 100644 index 000000000..d99b8b8c1 --- /dev/null +++ b/core/src/main/java/com/nisovin/magicspells/spells/targeted/cleanse/RewindSpellCleanser.java @@ -0,0 +1,35 @@ +package com.nisovin.magicspells.spells.targeted.cleanse; + +import java.util.function.BiConsumer; +import java.util.function.BiPredicate; + +import org.bukkit.entity.LivingEntity; + +import org.jetbrains.annotations.NotNull; + +import com.nisovin.magicspells.spells.targeted.RewindSpell; +import com.nisovin.magicspells.spells.targeted.cleanse.util.SpellCleanser; + +public class RewindSpellCleanser extends SpellCleanser { + + @Override + protected @NotNull String getPrefix() { + return "rewind"; + } + + @Override + protected @NotNull Class getSpellClass() { + return RewindSpell.class; + } + + @Override + protected @NotNull BiPredicate getIsActive() { + return RewindSpell::isRewinding; + } + + @Override + protected @NotNull BiConsumer getCleanse() { + return RewindSpell::rewindAll; + } + +} diff --git a/core/src/main/java/com/nisovin/magicspells/spells/targeted/cleanse/util/CleanserManager.java b/core/src/main/java/com/nisovin/magicspells/spells/targeted/cleanse/util/CleanserManager.java index c450cd703..135c5783b 100644 --- a/core/src/main/java/com/nisovin/magicspells/spells/targeted/cleanse/util/CleanserManager.java +++ b/core/src/main/java/com/nisovin/magicspells/spells/targeted/cleanse/util/CleanserManager.java @@ -44,6 +44,7 @@ private void initialize() { addCleanser(SilenceSpellCleanser.class); addCleanser(StunSpellCleanser.class); addCleanser(TotemSpellCleanser.class); + addCleanser(RewindSpellCleanser.class); } }