Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions core/src/main/java/com/nisovin/magicspells/MagicSpells.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@
import com.nisovin.magicspells.util.managers.*;
import com.nisovin.magicspells.mana.ManaSystem;
import com.nisovin.magicspells.mana.ManaHandler;
import com.nisovin.magicspells.spells.BuffSpell;
import com.nisovin.magicspells.variables.Variable;
import com.nisovin.magicspells.spells.PassiveSpell;
import com.nisovin.magicspells.commands.MagicCommand;
Expand Down Expand Up @@ -2169,7 +2168,6 @@ public void unload() {
}
}
}
if (spell instanceof BuffSpell buffSpell) buffSpell.stopAllEffects();

spell.turnOff();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,6 @@ public void initialize() {

@Override
public void turnOff() {
super.turnOff();

hitListener = null;
}

Expand Down
30 changes: 24 additions & 6 deletions core/src/main/java/com/nisovin/magicspells/spells/BuffSpell.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.nisovin.magicspells.spells;

import java.util.Map;
import java.util.UUID;
import java.util.HashMap;
import java.util.Iterator;
import java.util.*;
import java.util.concurrent.TimeUnit;

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.MustBeInvokedByOverriders;

import it.unimi.dsi.fastutil.objects.Object2LongMap;
import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap;

Expand Down Expand Up @@ -384,7 +384,7 @@ public void stopEffects(LivingEntity livingEntity) {
}
}

public void stopAllEffects() {
private void stopAllEffects() {
Iterator<EffectTracker> trackerIterator = getEffectTrackers().iterator();
EffectTracker effectTracker;
while (trackerIterator.hasNext()) {
Expand All @@ -404,8 +404,26 @@ public void stopAllEffects() {

protected abstract void turnOffBuff(LivingEntity entity);

/**
* The {@link BuffSpell} implementation of this method handles running {@link BuffSpell#turnOff(LivingEntity)} for entities.
*/
@Override
protected abstract void turnOff();
@MustBeInvokedByOverriders
protected void turnOff() {
stopAllEffects();

Collection<UUID> uuids = getActiveEntities();
if (!uuids.isEmpty()) {
for (UUID uuid : new ArrayList<>(uuids)) {
if (!(Bukkit.getEntity(uuid) instanceof LivingEntity entity)) continue;
if (!entity.isValid()) continue;
turnOff(entity);
}
}
}

@NotNull
protected abstract Collection<UUID> getActiveEntities();

public boolean isTargeted() {
return targeted;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,6 @@ public void initialize() {

@Override
public void turnOff() {
super.turnOff();

for (PassiveListener listener : passiveListeners) {
listener.turnOff();
HandlerList.unregisterAll(listener);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Set;
import java.util.List;
import java.util.UUID;
import java.util.HashSet;
import java.util.*;

import org.jetbrains.annotations.NotNull;

import org.bukkit.Bukkit;
import org.bukkit.event.Event;
Expand Down Expand Up @@ -137,16 +136,8 @@ public void turnOffBuff(LivingEntity entity) {
}

@Override
protected void turnOff() {
for (UUID id : entities) {
Entity entity = Bukkit.getEntity(id);
if (entity == null || !entity.isValid()) continue;

EntityEquipment eq = ((LivingEntity) entity).getEquipment();
if (eq != null) removeArmor(eq);
}

entities.clear();
protected @NotNull Collection<UUID> getActiveEntities() {
return entities;
}

private void setArmor(EntityEquipment eq) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Set;
import java.util.Map;
import java.util.UUID;
import java.util.HashSet;
import java.util.HashMap;
import java.util.*;

import org.jetbrains.annotations.NotNull;

import org.bukkit.Location;
import org.bukkit.Material;
Expand Down Expand Up @@ -76,17 +74,13 @@ public boolean isActive(LivingEntity entity) {

@Override
public void turnOffBuff(LivingEntity entity) {
BlockPlatform platform = entities.get(entity.getUniqueId());
if (platform == null) return;

platform.destroyPlatform();
entities.remove(entity.getUniqueId());
BlockPlatform platform = entities.remove(entity.getUniqueId());
if (platform != null) platform.destroyPlatform();
}

@Override
protected void turnOff() {
entities.values().forEach(BlockPlatform::destroyPlatform);
entities.clear();
protected @NotNull Collection<UUID> getActiveEntities() {
return entities.keySet();
}

private void handleMove(LivingEntity entity, Location to) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Map;
import java.util.UUID;
import java.util.HashMap;
import java.util.*;
import java.util.function.Supplier;

import org.jetbrains.annotations.NotNull;

import org.bukkit.event.EventHandler;
import org.bukkit.entity.LivingEntity;

Expand Down Expand Up @@ -86,8 +86,8 @@ protected void turnOffBuff(LivingEntity entity) {
}

@Override
protected void turnOff() {
entities.clear();
protected @NotNull Collection<UUID> getActiveEntities() {
return entities.keySet();
}

@EventHandler(ignoreCancelled = true)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Map;
import java.util.UUID;
import java.util.HashMap;
import java.util.*;
import java.util.function.Supplier;

import org.jetbrains.annotations.NotNull;

import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.entity.LivingEntity;
Expand Down Expand Up @@ -84,8 +84,8 @@ protected void turnOffBuff(LivingEntity entity) {
}

@Override
protected void turnOff() {
entities.clear();
protected @NotNull Collection<UUID> getActiveEntities() {
return entities.keySet();
}

@EventHandler(priority = EventPriority.HIGHEST)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Map;
import java.util.UUID;
import java.util.HashMap;
import java.util.*;

import org.jetbrains.annotations.NotNull;

import org.bukkit.Location;
import org.bukkit.util.Vector;
Expand Down Expand Up @@ -90,11 +90,8 @@ public void turnOffBuff(LivingEntity entity) {
}

@Override
protected void turnOff() {
for (EffectPosition pos: EffectPosition.values()) {
cancelEffectForAllPlayers(pos);
}
entities.clear();
protected @NotNull Collection<UUID> getActiveEntities() {
return entities.keySet();
}

@EventHandler
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Set;
import java.util.UUID;
import java.util.HashSet;
import java.util.*;

import org.jetbrains.annotations.NotNull;

import org.bukkit.entity.LivingEntity;

import com.nisovin.magicspells.util.SpellData;
import com.nisovin.magicspells.util.MagicConfig;
import com.nisovin.magicspells.spells.BuffSpell;
import com.nisovin.magicspells.spelleffects.EffectPosition;

public class DummySpell extends BuffSpell {

Expand Down Expand Up @@ -38,11 +37,8 @@ public void turnOffBuff(LivingEntity entity) {
}

@Override
protected void turnOff() {
for (EffectPosition pos: EffectPosition.values()) {
cancelEffectForAllPlayers(pos);
}
entities.clear();
protected @NotNull Collection<UUID> getActiveEntities() {
return entities;
}

public Set<UUID> getEntities() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Map;
import java.util.UUID;
import java.util.HashMap;
import java.util.*;
import java.util.function.Supplier;

import org.jetbrains.annotations.NotNull;

import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.entity.LivingEntity;
Expand Down Expand Up @@ -85,8 +85,8 @@ public void turnOffBuff(LivingEntity entity) {
}

@Override
protected void turnOff() {
entities.clear();
protected @NotNull Collection<UUID> getActiveEntities() {
return entities.keySet();
}

@EventHandler(priority = EventPriority.HIGHEST)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Map;
import java.util.UUID;
import java.util.HashMap;
import java.util.*;

import org.jetbrains.annotations.NotNull;

import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
Expand Down Expand Up @@ -88,21 +88,26 @@ public boolean isActive(LivingEntity entity) {
public void turnOffBuff(LivingEntity entity) {
entities.remove(entity.getUniqueId());
if (!entities.isEmpty()) return;
if (burner == null) return;

if (burner == null) return;
burner.stop();
burner = null;
}

@Override
protected void turnOff() {
entities.clear();
if (burner == null) return;
super.turnOff();

if (burner == null) return;
burner.stop();
burner = null;
}

@Override
protected @NotNull Collection<UUID> getActiveEntities() {
return entities.keySet();
}

private record FlamewalkData(SpellData spellData, boolean checkPlugins, double radius, boolean constantRadius, int fireTicks, boolean constantFireTicks) {
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.nisovin.magicspells.spells.buff;

import java.util.Map;
import java.util.UUID;
import java.util.HashMap;
import java.util.*;

import org.jetbrains.annotations.NotNull;

import org.bukkit.Location;
import org.bukkit.Material;
Expand Down Expand Up @@ -68,17 +68,13 @@ public boolean isActive(LivingEntity entity) {

@Override
public void turnOffBuff(LivingEntity entity) {
BlockPlatform platform = entities.get(entity.getUniqueId());
if (platform == null) return;

platform.destroyPlatform();
entities.remove(entity.getUniqueId());
BlockPlatform platform = entities.remove(entity.getUniqueId());
if (platform != null) platform.destroyPlatform();
}

@Override
protected void turnOff() {
entities.values().forEach(BlockPlatform::destroyPlatform);
entities.clear();
protected @NotNull Collection<UUID> getActiveEntities() {
return entities.keySet();
}

private void handleMove(LivingEntity entity, Location to, Location from) {
Expand Down
Loading