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