mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-01 20:52:12 -07:00
SPIGOT-4819: Continue refactoring of Arrow-related APIs
This commit is contained in:
@@ -116,6 +116,7 @@ import org.bukkit.craftbukkit.metadata.BlockMetadataStore;
|
|||||||
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
|
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
|
||||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||||
import org.bukkit.craftbukkit.util.CraftRayTraceResult;
|
import org.bukkit.craftbukkit.util.CraftRayTraceResult;
|
||||||
|
import org.bukkit.entity.AbstractArrow;
|
||||||
import org.bukkit.entity.AbstractHorse;
|
import org.bukkit.entity.AbstractHorse;
|
||||||
import org.bukkit.entity.AbstractVillager;
|
import org.bukkit.entity.AbstractVillager;
|
||||||
import org.bukkit.entity.Ambient;
|
import org.bukkit.entity.Ambient;
|
||||||
@@ -1295,7 +1296,7 @@ public class CraftWorld implements World {
|
|||||||
entity = new EntitySnowball(world, x, y, z);
|
entity = new EntitySnowball(world, x, y, z);
|
||||||
} else if (Egg.class.isAssignableFrom(clazz)) {
|
} else if (Egg.class.isAssignableFrom(clazz)) {
|
||||||
entity = new EntityEgg(world, x, y, z);
|
entity = new EntityEgg(world, x, y, z);
|
||||||
} else if (Arrow.class.isAssignableFrom(clazz)) {
|
} else if (AbstractArrow.class.isAssignableFrom(clazz)) {
|
||||||
if (TippedArrow.class.isAssignableFrom(clazz)) {
|
if (TippedArrow.class.isAssignableFrom(clazz)) {
|
||||||
entity = EntityTypes.ARROW.a(world);
|
entity = EntityTypes.ARROW.a(world);
|
||||||
((EntityTippedArrow) entity).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
|
((EntityTippedArrow) entity).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
|
||||||
|
@@ -6,12 +6,12 @@ import net.minecraft.server.EntityArrow;
|
|||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.entity.Arrow;
|
import org.bukkit.entity.AbstractArrow;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.projectiles.ProjectileSource;
|
import org.bukkit.projectiles.ProjectileSource;
|
||||||
|
|
||||||
public class CraftArrow extends AbstractProjectile implements Arrow {
|
public class CraftArrow extends AbstractProjectile implements AbstractArrow {
|
||||||
|
|
||||||
public CraftArrow(CraftServer server, EntityArrow entity) {
|
public CraftArrow(CraftServer server, EntityArrow entity) {
|
||||||
super(server, entity);
|
super(server, entity);
|
||||||
|
@@ -46,7 +46,7 @@ import org.bukkit.craftbukkit.CraftWorld;
|
|||||||
import org.bukkit.craftbukkit.inventory.CraftEntityEquipment;
|
import org.bukkit.craftbukkit.inventory.CraftEntityEquipment;
|
||||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
|
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
|
||||||
import org.bukkit.entity.Arrow;
|
import org.bukkit.entity.AbstractArrow;
|
||||||
import org.bukkit.entity.DragonFireball;
|
import org.bukkit.entity.DragonFireball;
|
||||||
import org.bukkit.entity.Egg;
|
import org.bukkit.entity.Egg;
|
||||||
import org.bukkit.entity.EnderPearl;
|
import org.bukkit.entity.EnderPearl;
|
||||||
@@ -369,7 +369,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
|
|||||||
} else if (EnderPearl.class.isAssignableFrom(projectile)) {
|
} else if (EnderPearl.class.isAssignableFrom(projectile)) {
|
||||||
launch = new EntityEnderPearl(world, getHandle());
|
launch = new EntityEnderPearl(world, getHandle());
|
||||||
((EntityProjectile) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, 0.0F, 1.5F, 1.0F); // ItemEnderPearl
|
((EntityProjectile) launch).a(getHandle(), getHandle().pitch, getHandle().yaw, 0.0F, 1.5F, 1.0F); // ItemEnderPearl
|
||||||
} else if (Arrow.class.isAssignableFrom(projectile)) {
|
} else if (AbstractArrow.class.isAssignableFrom(projectile)) {
|
||||||
if (TippedArrow.class.isAssignableFrom(projectile)) {
|
if (TippedArrow.class.isAssignableFrom(projectile)) {
|
||||||
launch = new EntityTippedArrow(world, getHandle());
|
launch = new EntityTippedArrow(world, getHandle());
|
||||||
((EntityTippedArrow) launch).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
|
((EntityTippedArrow) launch).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
|
||||||
|
@@ -9,14 +9,13 @@ import org.apache.commons.lang.Validate;
|
|||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
|
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
|
||||||
|
import org.bukkit.entity.Arrow;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.entity.TippedArrow;
|
|
||||||
import org.bukkit.potion.PotionData;
|
import org.bukkit.potion.PotionData;
|
||||||
import org.bukkit.potion.PotionEffect;
|
import org.bukkit.potion.PotionEffect;
|
||||||
import org.bukkit.potion.PotionEffectType;
|
import org.bukkit.potion.PotionEffectType;
|
||||||
import org.bukkit.potion.PotionType;
|
|
||||||
|
|
||||||
public class CraftTippedArrow extends CraftArrow implements TippedArrow {
|
public class CraftTippedArrow extends CraftArrow implements Arrow {
|
||||||
|
|
||||||
public CraftTippedArrow(CraftServer server, EntityTippedArrow entity) {
|
public CraftTippedArrow(CraftServer server, EntityTippedArrow entity) {
|
||||||
super(server, entity);
|
super(server, entity);
|
||||||
@@ -59,7 +58,6 @@ public class CraftTippedArrow extends CraftArrow implements TippedArrow {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void clearCustomEffects() {
|
public void clearCustomEffects() {
|
||||||
Validate.isTrue(getBasePotionData().getType() != PotionType.UNCRAFTABLE, "Tipped Arrows must have at least 1 effect");
|
|
||||||
getHandle().effects.clear();
|
getHandle().effects.clear();
|
||||||
getHandle().refreshEffects();
|
getHandle().refreshEffects();
|
||||||
}
|
}
|
||||||
@@ -100,7 +98,6 @@ public class CraftTippedArrow extends CraftArrow implements TippedArrow {
|
|||||||
if (existing == null) {
|
if (existing == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Validate.isTrue(getBasePotionData().getType() != PotionType.UNCRAFTABLE || !getHandle().effects.isEmpty(), "Tipped Arrows must have at least 1 effect");
|
|
||||||
getHandle().effects.remove(existing);
|
getHandle().effects.remove(existing);
|
||||||
getHandle().refreshEffects();
|
getHandle().refreshEffects();
|
||||||
return true;
|
return true;
|
||||||
@@ -109,7 +106,6 @@ public class CraftTippedArrow extends CraftArrow implements TippedArrow {
|
|||||||
@Override
|
@Override
|
||||||
public void setBasePotionData(PotionData data) {
|
public void setBasePotionData(PotionData data) {
|
||||||
Validate.notNull(data, "PotionData cannot be null");
|
Validate.notNull(data, "PotionData cannot be null");
|
||||||
Validate.isTrue(data.getType() != PotionType.UNCRAFTABLE || !getHandle().effects.isEmpty(), "Tipped Arrows must have at least 1 effect");
|
|
||||||
getHandle().setType(CraftPotionUtil.fromBukkit(data));
|
getHandle().setType(CraftPotionUtil.fromBukkit(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -25,6 +25,7 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
||||||
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
|
import org.bukkit.craftbukkit.potion.CraftPotionUtil;
|
||||||
|
import org.bukkit.entity.AbstractArrow;
|
||||||
import org.bukkit.entity.Arrow;
|
import org.bukkit.entity.Arrow;
|
||||||
import org.bukkit.entity.Egg;
|
import org.bukkit.entity.Egg;
|
||||||
import org.bukkit.entity.EnderPearl;
|
import org.bukkit.entity.EnderPearl;
|
||||||
@@ -89,7 +90,7 @@ public class CraftBlockProjectileSource implements BlockProjectileSource {
|
|||||||
launch = new EntityPotion(world, iposition.getX(), iposition.getY(), iposition.getZ());
|
launch = new EntityPotion(world, iposition.getX(), iposition.getY(), iposition.getZ());
|
||||||
((EntityPotion) launch).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.SPLASH_POTION, 1)));
|
((EntityPotion) launch).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.SPLASH_POTION, 1)));
|
||||||
}
|
}
|
||||||
} else if (Arrow.class.isAssignableFrom(projectile)) {
|
} else if (AbstractArrow.class.isAssignableFrom(projectile)) {
|
||||||
if (TippedArrow.class.isAssignableFrom(projectile)) {
|
if (TippedArrow.class.isAssignableFrom(projectile)) {
|
||||||
launch = new EntityTippedArrow(world, iposition.getX(), iposition.getY(), iposition.getZ());
|
launch = new EntityTippedArrow(world, iposition.getX(), iposition.getY(), iposition.getZ());
|
||||||
((EntityTippedArrow) launch).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
|
((EntityTippedArrow) launch).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
|
||||||
|
Reference in New Issue
Block a user