package com.laytonsmith.abstraction.bukkit.entities; import com.laytonsmith.abstraction.MCLivingEntity; import com.laytonsmith.abstraction.MCPotionData; import com.laytonsmith.abstraction.bukkit.BukkitMCPotionData; import com.laytonsmith.abstraction.entities.MCTippedArrow; import org.bukkit.entity.Entity; import org.bukkit.entity.TippedArrow; import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import java.util.ArrayList; import java.util.List; public class BukkitMCTippedArrow extends BukkitMCArrow implements MCTippedArrow { TippedArrow ta; public BukkitMCTippedArrow(Entity ta) { super(ta); this.ta = (TippedArrow) ta; } @Override public MCPotionData getBasePotionData() { return new BukkitMCPotionData(ta.getBasePotionData()); } @Override public List<MCLivingEntity.MCEffect> getCustomEffects(){ List<MCLivingEntity.MCEffect> list = new ArrayList<>(); for (PotionEffect pe : ta.getCustomEffects()) { list.add(new MCLivingEntity.MCEffect(pe.getType().getId(), pe.getAmplifier(), pe.getDuration() / 20, pe.isAmbient(), pe.hasParticles())); } return list; } @Override public void addCustomEffect(MCLivingEntity.MCEffect effect){ PotionEffect pe = new PotionEffect(PotionEffectType.getById(effect.getPotionID()), effect.getSecondsRemaining() * 20, effect.getStrength(), effect.isAmbient(), effect.hasParticles()); ta.addCustomEffect(pe, true); } @Override public void clearCustomEffects(){ ta.clearCustomEffects(); } @Override public void setBasePotionData(MCPotionData pd){ ta.setBasePotionData((PotionData) pd.getHandle()); } }