use of net.minecraft.entity.projectile.EggEntity in project Arclight by IzzelAliz.
the class EggItemMixin method onItemRightClick.
@Override
public ActionResult<ItemStack> onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) {
ItemStack stack = playerIn.getHeldItem(handIn);
if (!worldIn.isRemote) {
EggEntity eggEntity = new EggEntity(worldIn, playerIn);
eggEntity.setItem(stack);
eggEntity.shoot(playerIn, playerIn.rotationPitch, playerIn.rotationYaw, 0.0f, 1.5f, 1.0f);
if (!worldIn.addEntity(eggEntity)) {
if (playerIn instanceof ServerPlayerEntity) {
((ServerPlayerEntityBridge) playerIn).bridge$getBukkitEntity().updateInventory();
}
return ActionResult.resultFail(stack);
}
}
worldIn.playSound(null, playerIn.getPosX(), playerIn.getPosY(), playerIn.getPosZ(), SoundEvents.ENTITY_EGG_THROW, SoundCategory.PLAYERS, 0.5f, 0.4f / (random.nextFloat() * 0.4f + 0.8f));
playerIn.addStat(Stats.ITEM_USED.get(this));
if (!playerIn.abilities.isCreativeMode) {
stack.shrink(1);
}
return ActionResult.resultSuccess(stack);
}
use of net.minecraft.entity.projectile.EggEntity in project Arclight by IzzelAliz.
the class EggEntityMixin method onImpact.
/**
* @author IzzelAliz
* @reason
*/
@Overwrite
protected void onImpact(final RayTraceResult movingobjectposition) {
if (movingobjectposition.getType() == RayTraceResult.Type.ENTITY) {
((EntityRayTraceResult) movingobjectposition).getEntity().attackEntityFrom(DamageSource.causeThrownDamage((EggEntity) (Object) this, this.getThrower()), 0.0f);
}
if (!this.world.isRemote) {
boolean hatching = this.rand.nextInt(8) == 0;
byte b0 = 1;
if (this.rand.nextInt(32) == 0) {
b0 = 4;
}
if (!hatching) {
b0 = 0;
}
org.bukkit.entity.EntityType hatchingType = org.bukkit.entity.EntityType.CHICKEN;
final Entity shooter = this.getThrower();
if (shooter instanceof ServerPlayerEntity) {
final PlayerEggThrowEvent event = new PlayerEggThrowEvent(((ServerPlayerEntityBridge) shooter).bridge$getBukkitEntity(), (Egg) this.getBukkitEntity(), hatching, b0, hatchingType);
Bukkit.getPluginManager().callEvent(event);
b0 = event.getNumHatches();
hatching = event.isHatching();
hatchingType = event.getHatchingType();
}
if (hatching) {
for (int i = 0; i < b0; ++i) {
Entity entity = ((CraftEntity) ((WorldBridge) this.world).bridge$getWorld().spawnEntity(new Location(((WorldBridge) this.world).bridge$getWorld(), this.posX, this.posY, this.posZ, this.rotationYaw, 0.0f), hatchingType)).getHandle();
if (((EntityBridge) entity).bridge$getBukkitEntity() instanceof Ageable) {
((Ageable) ((EntityBridge) entity).bridge$getBukkitEntity()).setBaby();
}
((WorldBridge) this.world).bridge$pushAddEntityReason(CreatureSpawnEvent.SpawnReason.EGG);
this.world.getWorld().addEntity(entity);
}
}
this.world.setEntityState((EggEntity) (Object) this, (byte) 3);
this.remove();
}
}
use of net.minecraft.entity.projectile.EggEntity in project Magma-1.16.x by magmafoundation.
the class CraftWorld method createEntity.
@SuppressWarnings("unchecked")
public net.minecraft.entity.Entity createEntity(Location location, Class<? extends Entity> clazz) throws IllegalArgumentException {
if (location == null || clazz == null) {
throw new IllegalArgumentException("Location or entity class cannot be null");
}
net.minecraft.entity.Entity entity = null;
double x = location.getX();
double y = location.getY();
double z = location.getZ();
float pitch = location.getPitch();
float yaw = location.getYaw();
// order is important for some of these
if (Boat.class.isAssignableFrom(clazz)) {
entity = new BoatEntity(world, x, y, z);
entity.moveTo(x, y, z, yaw, pitch);
} else if (FallingBlock.class.isAssignableFrom(clazz)) {
entity = new FallingBlockEntity(world, x, y, z, world.getBlockState(new BlockPos(x, y, z)));
} else if (Projectile.class.isAssignableFrom(clazz)) {
if (Snowball.class.isAssignableFrom(clazz)) {
entity = new SnowballEntity(world, x, y, z);
} else if (Egg.class.isAssignableFrom(clazz)) {
entity = new EggEntity(world, x, y, z);
} else if (AbstractArrow.class.isAssignableFrom(clazz)) {
if (TippedArrow.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ARROW.create(world);
((ArrowEntity) entity).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
} else if (SpectralArrow.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SPECTRAL_ARROW.create(world);
} else if (Trident.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.TRIDENT.create(world);
} else {
entity = net.minecraft.entity.EntityType.ARROW.create(world);
}
entity.moveTo(x, y, z, 0, 0);
} else if (ThrownExpBottle.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.EXPERIENCE_BOTTLE.create(world);
entity.moveTo(x, y, z, 0, 0);
} else if (EnderPearl.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ENDER_PEARL.create(world);
entity.moveTo(x, y, z, 0, 0);
} else if (ThrownPotion.class.isAssignableFrom(clazz)) {
if (LingeringPotion.class.isAssignableFrom(clazz)) {
entity = new PotionEntity(world, x, y, z);
((PotionEntity) entity).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.LINGERING_POTION, 1)));
} else {
entity = new PotionEntity(world, x, y, z);
((PotionEntity) entity).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.SPLASH_POTION, 1)));
}
} else if (Fireball.class.isAssignableFrom(clazz)) {
if (SmallFireball.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SMALL_FIREBALL.create(world);
} else if (WitherSkull.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.WITHER_SKULL.create(world);
} else if (DragonFireball.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.DRAGON_FIREBALL.create(world);
} else {
entity = net.minecraft.entity.EntityType.FIREBALL.create(world);
}
entity.moveTo(x, y, z, yaw, pitch);
Vector direction = location.getDirection().multiply(10);
((DamagingProjectileEntity) entity).setDirection(direction.getX(), direction.getY(), direction.getZ());
} else if (ShulkerBullet.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SHULKER_BULLET.create(world);
entity.moveTo(x, y, z, yaw, pitch);
} else if (LlamaSpit.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.LLAMA_SPIT.create(world);
entity.moveTo(x, y, z, yaw, pitch);
} else if (Firework.class.isAssignableFrom(clazz)) {
entity = new FireworkRocketEntity(world, x, y, z, net.minecraft.item.ItemStack.EMPTY);
}
} else if (Minecart.class.isAssignableFrom(clazz)) {
if (PoweredMinecart.class.isAssignableFrom(clazz)) {
entity = new FurnaceMinecartEntity(world, x, y, z);
} else if (StorageMinecart.class.isAssignableFrom(clazz)) {
entity = new ChestMinecartEntity(world, x, y, z);
} else if (ExplosiveMinecart.class.isAssignableFrom(clazz)) {
entity = new TNTMinecartEntity(world, x, y, z);
} else if (HopperMinecart.class.isAssignableFrom(clazz)) {
entity = new HopperMinecartEntity(world, x, y, z);
} else if (SpawnerMinecart.class.isAssignableFrom(clazz)) {
entity = new SpawnerMinecartEntity(world, x, y, z);
} else if (CommandMinecart.class.isAssignableFrom(clazz)) {
entity = new MinecartEntity(world, x, y, z);
} else {
// Default to rideable minecart for pre-rideable compatibility
entity = new MinecartEntity(world, x, y, z);
}
} else if (EnderSignal.class.isAssignableFrom(clazz)) {
entity = new EyeOfEnderEntity(world, x, y, z);
} else if (EnderCrystal.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.END_CRYSTAL.create(world);
entity.moveTo(x, y, z, 0, 0);
} else if (LivingEntity.class.isAssignableFrom(clazz)) {
if (Chicken.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.CHICKEN.create(world);
} else if (Cow.class.isAssignableFrom(clazz)) {
if (MushroomCow.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.MOOSHROOM.create(world);
} else {
entity = net.minecraft.entity.EntityType.COW.create(world);
}
} else if (Golem.class.isAssignableFrom(clazz)) {
if (Snowman.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SNOW_GOLEM.create(world);
} else if (IronGolem.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.IRON_GOLEM.create(world);
} else if (Shulker.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SHULKER.create(world);
}
} else if (Creeper.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.CREEPER.create(world);
} else if (Ghast.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.GHAST.create(world);
} else if (Pig.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.PIG.create(world);
} else if (Player.class.isAssignableFrom(clazz)) {
// need a net server handler for this one
} else if (Sheep.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SHEEP.create(world);
} else if (AbstractHorse.class.isAssignableFrom(clazz)) {
if (ChestedHorse.class.isAssignableFrom(clazz)) {
if (Donkey.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.DONKEY.create(world);
} else if (Mule.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.MULE.create(world);
} else if (Llama.class.isAssignableFrom(clazz)) {
if (TraderLlama.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.TRADER_LLAMA.create(world);
} else {
entity = net.minecraft.entity.EntityType.LLAMA.create(world);
}
}
} else if (SkeletonHorse.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SKELETON_HORSE.create(world);
} else if (ZombieHorse.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ZOMBIE_HORSE.create(world);
} else {
entity = net.minecraft.entity.EntityType.HORSE.create(world);
}
} else if (Skeleton.class.isAssignableFrom(clazz)) {
if (Stray.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.STRAY.create(world);
} else if (WitherSkeleton.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.WITHER_SKELETON.create(world);
} else {
entity = net.minecraft.entity.EntityType.SKELETON.create(world);
}
} else if (Slime.class.isAssignableFrom(clazz)) {
if (MagmaCube.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.MAGMA_CUBE.create(world);
} else {
entity = net.minecraft.entity.EntityType.SLIME.create(world);
}
} else if (Spider.class.isAssignableFrom(clazz)) {
if (CaveSpider.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.CAVE_SPIDER.create(world);
} else {
entity = net.minecraft.entity.EntityType.SPIDER.create(world);
}
} else if (Squid.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SQUID.create(world);
} else if (Tameable.class.isAssignableFrom(clazz)) {
if (Wolf.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.WOLF.create(world);
} else if (Parrot.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.PARROT.create(world);
} else if (Cat.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.CAT.create(world);
}
} else if (PigZombie.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ZOMBIFIED_PIGLIN.create(world);
} else if (Zombie.class.isAssignableFrom(clazz)) {
if (Husk.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.HUSK.create(world);
} else if (ZombieVillager.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ZOMBIE_VILLAGER.create(world);
} else if (Drowned.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.DROWNED.create(world);
} else {
entity = new ZombieEntity(world);
}
} else if (Giant.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.GIANT.create(world);
} else if (Silverfish.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SILVERFISH.create(world);
} else if (Enderman.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ENDERMAN.create(world);
} else if (Blaze.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.BLAZE.create(world);
} else if (AbstractVillager.class.isAssignableFrom(clazz)) {
if (Villager.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.VILLAGER.create(world);
} else if (WanderingTrader.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.WANDERING_TRADER.create(world);
}
} else if (Witch.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.WITCH.create(world);
} else if (Wither.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.WITHER.create(world);
} else if (ComplexLivingEntity.class.isAssignableFrom(clazz)) {
if (EnderDragon.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ENDER_DRAGON.create(world);
}
} else if (Ambient.class.isAssignableFrom(clazz)) {
if (Bat.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.BAT.create(world);
}
} else if (Rabbit.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.RABBIT.create(world);
} else if (Endermite.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ENDERMITE.create(world);
} else if (Guardian.class.isAssignableFrom(clazz)) {
if (ElderGuardian.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ELDER_GUARDIAN.create(world);
} else {
entity = net.minecraft.entity.EntityType.GUARDIAN.create(world);
}
} else if (ArmorStand.class.isAssignableFrom(clazz)) {
entity = new ArmorStandEntity(world, x, y, z);
} else if (PolarBear.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.POLAR_BEAR.create(world);
} else if (Vex.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.VEX.create(world);
} else if (Illager.class.isAssignableFrom(clazz)) {
if (Spellcaster.class.isAssignableFrom(clazz)) {
if (Evoker.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.EVOKER.create(world);
} else if (Illusioner.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ILLUSIONER.create(world);
}
} else if (Vindicator.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.VINDICATOR.create(world);
} else if (Pillager.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.PILLAGER.create(world);
}
} else if (Turtle.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.TURTLE.create(world);
} else if (Phantom.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.PHANTOM.create(world);
} else if (Fish.class.isAssignableFrom(clazz)) {
if (Cod.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.COD.create(world);
} else if (PufferFish.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.PUFFERFISH.create(world);
} else if (Salmon.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.SALMON.create(world);
} else if (TropicalFish.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.TROPICAL_FISH.create(world);
}
} else if (Dolphin.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.DOLPHIN.create(world);
} else if (Ocelot.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.OCELOT.create(world);
} else if (Ravager.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.RAVAGER.create(world);
} else if (Panda.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.PANDA.create(world);
} else if (Fox.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.FOX.create(world);
} else if (Bee.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.BEE.create(world);
} else if (Hoglin.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.HOGLIN.create(world);
} else if (Piglin.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.PIGLIN.create(world);
} else if (PiglinBrute.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.PIGLIN_BRUTE.create(world);
} else if (Strider.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.STRIDER.create(world);
} else if (Zoglin.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.ZOGLIN.create(world);
}
if (entity != null) {
entity.absMoveTo(x, y, z, yaw, pitch);
// SPIGOT-3587
entity.setYHeadRot(yaw);
}
} else if (Hanging.class.isAssignableFrom(clazz)) {
BlockFace face = BlockFace.SELF;
// 1 full block, also painting smallest size.
int width = 16;
// 1 full block, also painting smallest size.
int height = 16;
if (ItemFrame.class.isAssignableFrom(clazz)) {
width = 12;
height = 12;
} else if (LeashHitch.class.isAssignableFrom(clazz)) {
width = 9;
height = 9;
}
BlockFace[] faces = new BlockFace[] { BlockFace.EAST, BlockFace.NORTH, BlockFace.WEST, BlockFace.SOUTH, BlockFace.UP, BlockFace.DOWN };
final BlockPos pos = new BlockPos(x, y, z);
for (BlockFace dir : faces) {
net.minecraft.block.BlockState nmsBlock = world.getBlockState(pos.relative(CraftBlock.blockFaceToNotch(dir)));
if (nmsBlock.getMaterial().isSolid() || RedstoneDiodeBlock.isDiode(nmsBlock)) {
boolean taken = false;
AxisAlignedBB bb = (ItemFrame.class.isAssignableFrom(clazz)) ? ItemFrameEntity.calculateBoundingBox(null, pos, CraftBlock.blockFaceToNotch(dir).getOpposite(), width, height) : HangingEntity.calculateBoundingBox(null, pos, CraftBlock.blockFaceToNotch(dir).getOpposite(), width, height);
List<net.minecraft.entity.Entity> list = (List<net.minecraft.entity.Entity>) world.getEntities(null, bb);
for (Iterator<net.minecraft.entity.Entity> it = list.iterator(); !taken && it.hasNext(); ) {
net.minecraft.entity.Entity e = it.next();
if (e instanceof HangingEntity) {
// Hanging entities do not like hanging entities which intersect them.
taken = true;
}
}
if (!taken) {
face = dir;
break;
}
}
}
if (LeashHitch.class.isAssignableFrom(clazz)) {
entity = new LeashKnotEntity(world, new BlockPos(x, y, z));
entity.forcedLoading = true;
} else {
// No valid face found
Preconditions.checkArgument(face != BlockFace.SELF, "Cannot spawn hanging entity for %s at %s (no free face)", clazz.getName(), location);
Direction dir = CraftBlock.blockFaceToNotch(face).getOpposite();
if (Painting.class.isAssignableFrom(clazz)) {
entity = new PaintingEntity(world, new BlockPos(x, y, z), dir);
} else if (ItemFrame.class.isAssignableFrom(clazz)) {
entity = new ItemFrameEntity(world, new BlockPos(x, y, z), dir);
}
}
if (entity != null && !((HangingEntity) entity).survives()) {
throw new IllegalArgumentException("Cannot spawn hanging entity for " + clazz.getName() + " at " + location);
}
} else if (TNTPrimed.class.isAssignableFrom(clazz)) {
entity = new TNTEntity(world, x, y, z, null);
} else if (ExperienceOrb.class.isAssignableFrom(clazz)) {
entity = new ExperienceOrbEntity(world, x, y, z, 0);
} else if (LightningStrike.class.isAssignableFrom(clazz)) {
entity = net.minecraft.entity.EntityType.LIGHTNING_BOLT.create(world);
} else if (AreaEffectCloud.class.isAssignableFrom(clazz)) {
entity = new AreaEffectCloudEntity(world, x, y, z);
} else if (EvokerFangs.class.isAssignableFrom(clazz)) {
entity = new EvokerFangsEntity(world, x, y, z, (float) Math.toRadians(yaw), 0, null);
}
if (entity != null) {
return entity;
}
throw new IllegalArgumentException("Cannot spawn an entity for " + clazz.getName());
}
use of net.minecraft.entity.projectile.EggEntity in project Magma-1.16.x by magmafoundation.
the class CraftLivingEntity method launchProjectile.
@Override
@SuppressWarnings("unchecked")
public <T extends Projectile> T launchProjectile(Class<? extends T> projectile, Vector velocity) {
net.minecraft.world.World world = ((CraftWorld) getWorld()).getHandle();
net.minecraft.entity.Entity launch = null;
if (Snowball.class.isAssignableFrom(projectile)) {
launch = new SnowballEntity(world, getHandle());
// ItemSnowball
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, 0.0F, 1.5F, 1.0F);
} else if (Egg.class.isAssignableFrom(projectile)) {
launch = new EggEntity(world, getHandle());
// ItemEgg
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, 0.0F, 1.5F, 1.0F);
} else if (EnderPearl.class.isAssignableFrom(projectile)) {
launch = new EnderPearlEntity(world, getHandle());
// EnderPearlItem
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, 0.0F, 1.5F, 1.0F);
} else if (AbstractArrow.class.isAssignableFrom(projectile)) {
if (TippedArrow.class.isAssignableFrom(projectile)) {
launch = new ArrowEntity(world, getHandle());
((ArrowEntity) launch).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
} else if (SpectralArrow.class.isAssignableFrom(projectile)) {
launch = new SpectralArrowEntity(world, getHandle());
} else if (Trident.class.isAssignableFrom(projectile)) {
launch = new TridentEntity(world, getHandle(), new net.minecraft.item.ItemStack(net.minecraft.item.Items.TRIDENT));
} else {
launch = new ArrowEntity(world, getHandle());
}
// ItemBow
((AbstractArrowEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, 0.0F, 3.0F, 1.0F);
} else if (ThrownPotion.class.isAssignableFrom(projectile)) {
if (LingeringPotion.class.isAssignableFrom(projectile)) {
launch = new PotionEntity(world, getHandle());
((PotionEntity) launch).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.LINGERING_POTION, 1)));
} else {
launch = new PotionEntity(world, getHandle());
((PotionEntity) launch).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.SPLASH_POTION, 1)));
}
// SplashPotionItem
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, -20.0F, 0.5F, 1.0F);
} else if (ThrownExpBottle.class.isAssignableFrom(projectile)) {
launch = new ExperienceBottleEntity(world, getHandle());
// ExperienceBottleItem
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, -20.0F, 0.7F, 1.0F);
} else if (FishHook.class.isAssignableFrom(projectile) && getHandle() instanceof PlayerEntity) {
launch = new FishingBobberEntity((PlayerEntity) getHandle(), world, 0, 0);
} else if (Fireball.class.isAssignableFrom(projectile)) {
Location location = getEyeLocation();
Vector direction = location.getDirection().multiply(10);
if (SmallFireball.class.isAssignableFrom(projectile)) {
launch = new SmallFireballEntity(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
} else if (WitherSkull.class.isAssignableFrom(projectile)) {
launch = new WitherSkullEntity(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
} else if (DragonFireball.class.isAssignableFrom(projectile)) {
launch = new DragonFireballEntity(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
} else {
launch = new FireballEntity(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
}
((DamagingProjectileEntity) launch).projectileSource = this;
launch.moveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
} else if (LlamaSpit.class.isAssignableFrom(projectile)) {
Location location = getEyeLocation();
Vector direction = location.getDirection();
launch = net.minecraft.entity.EntityType.LLAMA_SPIT.create(world);
((LlamaSpitEntity) launch).setOwner(getHandle());
// LlamaEntity
((LlamaSpitEntity) launch).shoot(direction.getX(), direction.getY(), direction.getZ(), 1.5F, 10.0F);
launch.moveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
} else if (ShulkerBullet.class.isAssignableFrom(projectile)) {
Location location = getEyeLocation();
launch = new ShulkerBulletEntity(world, getHandle(), null, null);
launch.moveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
} else if (Firework.class.isAssignableFrom(projectile)) {
Location location = getEyeLocation();
launch = new FireworkRocketEntity(world, net.minecraft.item.ItemStack.EMPTY, getHandle());
launch.moveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
}
Validate.notNull(launch, "Projectile not supported");
if (velocity != null) {
((T) launch.getBukkitEntity()).setVelocity(velocity);
}
world.addFreshEntity(launch);
return (T) launch.getBukkitEntity();
}
use of net.minecraft.entity.projectile.EggEntity in project LoliServer by Loli-Server.
the class CraftLivingEntity method launchProjectile.
@Override
@SuppressWarnings("unchecked")
public <T extends Projectile> T launchProjectile(Class<? extends T> projectile, Vector velocity) {
net.minecraft.world.World world = ((CraftWorld) getWorld()).getHandle();
net.minecraft.entity.Entity launch = null;
if (Snowball.class.isAssignableFrom(projectile)) {
launch = new SnowballEntity(world, getHandle());
// ItemSnowball
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, 0.0F, 1.5F, 1.0F);
} else if (Egg.class.isAssignableFrom(projectile)) {
launch = new EggEntity(world, getHandle());
// ItemEgg
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, 0.0F, 1.5F, 1.0F);
} else if (EnderPearl.class.isAssignableFrom(projectile)) {
launch = new EnderPearlEntity(world, getHandle());
// EnderPearlItem
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, 0.0F, 1.5F, 1.0F);
} else if (AbstractArrow.class.isAssignableFrom(projectile)) {
if (TippedArrow.class.isAssignableFrom(projectile)) {
launch = new ArrowEntity(world, getHandle());
((ArrowEntity) launch).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
} else if (SpectralArrow.class.isAssignableFrom(projectile)) {
launch = new SpectralArrowEntity(world, getHandle());
} else if (Trident.class.isAssignableFrom(projectile)) {
launch = new TridentEntity(world, getHandle(), new net.minecraft.item.ItemStack(net.minecraft.item.Items.TRIDENT));
} else {
launch = new ArrowEntity(world, getHandle());
}
// ItemBow
((AbstractArrowEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, 0.0F, 3.0F, 1.0F);
} else if (ThrownPotion.class.isAssignableFrom(projectile)) {
if (LingeringPotion.class.isAssignableFrom(projectile)) {
launch = new PotionEntity(world, getHandle());
((PotionEntity) launch).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.LINGERING_POTION, 1)));
} else {
launch = new PotionEntity(world, getHandle());
((PotionEntity) launch).setItem(CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.SPLASH_POTION, 1)));
}
// SplashPotionItem
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, -20.0F, 0.5F, 1.0F);
} else if (ThrownExpBottle.class.isAssignableFrom(projectile)) {
launch = new ExperienceBottleEntity(world, getHandle());
// ExperienceBottleItem
((ThrowableEntity) launch).shootFromRotation(getHandle(), getHandle().xRot, getHandle().yRot, -20.0F, 0.7F, 1.0F);
} else if (FishHook.class.isAssignableFrom(projectile) && getHandle() instanceof PlayerEntity) {
launch = new FishingBobberEntity((PlayerEntity) getHandle(), world, 0, 0);
} else if (Fireball.class.isAssignableFrom(projectile)) {
Location location = getEyeLocation();
Vector direction = location.getDirection().multiply(10);
if (SmallFireball.class.isAssignableFrom(projectile)) {
launch = new SmallFireballEntity(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
} else if (WitherSkull.class.isAssignableFrom(projectile)) {
launch = new WitherSkullEntity(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
} else if (DragonFireball.class.isAssignableFrom(projectile)) {
launch = new DragonFireballEntity(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
} else {
launch = new FireballEntity(world, getHandle(), direction.getX(), direction.getY(), direction.getZ());
}
((DamagingProjectileEntity) launch).projectileSource = this;
launch.moveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
} else if (LlamaSpit.class.isAssignableFrom(projectile)) {
Location location = getEyeLocation();
Vector direction = location.getDirection();
launch = net.minecraft.entity.EntityType.LLAMA_SPIT.create(world);
((LlamaSpitEntity) launch).setOwner(getHandle());
// LlamaEntity
((LlamaSpitEntity) launch).shoot(direction.getX(), direction.getY(), direction.getZ(), 1.5F, 10.0F);
launch.moveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
} else if (ShulkerBullet.class.isAssignableFrom(projectile)) {
Location location = getEyeLocation();
launch = new ShulkerBulletEntity(world, getHandle(), null, null);
launch.moveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
} else if (Firework.class.isAssignableFrom(projectile)) {
Location location = getEyeLocation();
launch = new FireworkRocketEntity(world, net.minecraft.item.ItemStack.EMPTY, getHandle());
launch.moveTo(location.getX(), location.getY(), location.getZ(), location.getYaw(), location.getPitch());
}
Validate.notNull(launch, "Projectile not supported");
if (velocity != null) {
((T) launch.getBukkitEntity()).setVelocity(velocity);
}
world.addFreshEntity(launch);
return (T) launch.getBukkitEntity();
}
Aggregations