package com.laytonsmith.abstraction.bukkit.entities;
import com.laytonsmith.abstraction.MCEntity;
import com.laytonsmith.abstraction.MCProjectile;
import com.laytonsmith.abstraction.MCProjectileSource;
import com.laytonsmith.abstraction.blocks.MCBlockProjectileSource;
import com.laytonsmith.abstraction.bukkit.BukkitConvertor;
import com.laytonsmith.abstraction.bukkit.blocks.BukkitMCBlockProjectileSource;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Projectile;
import org.bukkit.projectiles.BlockProjectileSource;
import org.bukkit.projectiles.ProjectileSource;
public class BukkitMCProjectile extends BukkitMCEntity implements MCProjectile {
Projectile proj;
public BukkitMCProjectile(Entity e) {
super(e);
this.proj = (Projectile) e;
}
@Override
public boolean doesBounce() {
return proj.doesBounce();
}
@Override
public MCProjectileSource getShooter() {
ProjectileSource source = proj.getShooter();
if (source instanceof BlockProjectileSource) {
return new BukkitMCBlockProjectileSource((BlockProjectileSource) source);
}
if (source instanceof Entity) {
MCEntity e = BukkitConvertor.BukkitGetCorrectEntity((Entity) source);
if (e instanceof MCProjectileSource) {
return (MCProjectileSource) e;
}
}
return null;
}
@Override
public void setBounce(boolean doesBounce) {
proj.setBounce(doesBounce);
}
@Override
public void setShooter(MCProjectileSource shooter){
if(shooter == null){
proj.setShooter(null);
} else if(shooter instanceof MCBlockProjectileSource){
proj.setShooter((BlockProjectileSource) shooter.getHandle());
} else {
proj.setShooter((ProjectileSource) shooter.getHandle());
}
}
public Projectile asProjectile() {
return proj;
}
}