package org.arkham.cs.effects;
import java.util.HashMap;
import java.util.UUID;
import org.arkham.cs.CosmeticSuite;
import org.arkham.cs.cosmetics.CustomEffect;
import org.arkham.cs.handler.ParticleLibManager.FancyEffect;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.metadata.FixedMetadataValue;
public class EffectManager implements Listener{
private HashMap<UUID, CustomEffect> effects = new HashMap<>();
public EffectManager(){
CosmeticSuite cs = CosmeticSuite.getInstance();
cs.getServer().getPluginManager().registerEvents(this, cs);
}
public CustomEffect getEffect(Player player){
return effects.get(player.getUniqueId());
}
public void setEffect(Player player, CustomEffect effect){
if(effect == null) {
if(effects.containsKey(player.getUniqueId())){
effects.get(player.getUniqueId()).getEffect().stop(player);
}
effects.remove(player.getUniqueId());
return;
}
effects.put(player.getUniqueId(), effect);
}
@EventHandler
public void onMove(PlayerMoveEvent event){
Player player = event.getPlayer();
if(event.getTo().getBlockX() == event.getFrom().getBlockX() && event.getTo().getBlockZ() == event.getFrom().getBlockZ()){
return;
}
if(player.hasMetadata("effected")){
return;
}
CustomEffect effect = getEffect(player);
if(effect == null){
return;
}
FancyEffect playedEffect = effect.getEffect();
playedEffect.display(player);
player.setMetadata("effected", new FixedMetadataValue(CosmeticSuite.getInstance(), ""));
}
}