Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public Entity createEntity(Location location, Class<? extends org.bukkit.entity.Entity> clazz) throws IllegalArgumentException {
- if (location != null && clazz != null) {
- Entity entity = null;
- double x = location.getX();
- double y = location.getY();
- double z = location.getZ();
- float pitch = location.getPitch();
- float yaw = location.getYaw();
- if (Boat.class.isAssignableFrom(clazz)) {
- entity = new EntityBoat(this.world, x, y, z);
- ((Entity)entity).setPositionRotation(x, y, z, yaw, pitch);
- } else if (FallingBlock.class.isAssignableFrom(clazz)) {
- entity = new EntityFallingBlock(this.world, x, y, z, this.world.getType(new BlockPosition(x, y, z)));
- } else if (Projectile.class.isAssignableFrom(clazz)) {
- if (Snowball.class.isAssignableFrom(clazz)) {
- entity = new EntitySnowball(this.world, x, y, z);
- } else if (Egg.class.isAssignableFrom(clazz)) {
- entity = new EntityEgg(this.world, x, y, z);
- } else if (Arrow.class.isAssignableFrom(clazz)) {
- if (TippedArrow.class.isAssignableFrom(clazz)) {
- entity = new EntityTippedArrow(this.world);
- ((EntityTippedArrow)entity).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
- } else if (SpectralArrow.class.isAssignableFrom(clazz)) {
- entity = new EntitySpectralArrow(this.world);
- } else {
- entity = new EntityTippedArrow(this.world);
- }
- ((Entity)entity).setPositionRotation(x, y, z, 0.0F, 0.0F);
- } else if (ThrownExpBottle.class.isAssignableFrom(clazz)) {
- entity = new EntityThrownExpBottle(this.world);
- ((Entity)entity).setPositionRotation(x, y, z, 0.0F, 0.0F);
- } else if (EnderPearl.class.isAssignableFrom(clazz)) {
- entity = new EntityEnderPearl(this.world);
- ((Entity)entity).setPositionRotation(x, y, z, 0.0F, 0.0F);
- } else if (ThrownPotion.class.isAssignableFrom(clazz)) {
- if (LingeringPotion.class.isAssignableFrom(clazz)) {
- entity = new EntityPotion(this.world, x, y, z, CraftItemStack.asNMSCopy(new ItemStack(Material.LINGERING_POTION, 1)));
- } else {
- entity = new EntityPotion(this.world, x, y, z, CraftItemStack.asNMSCopy(new ItemStack(Material.SPLASH_POTION, 1)));
- }
- } else if (Fireball.class.isAssignableFrom(clazz)) {
- if (SmallFireball.class.isAssignableFrom(clazz)) {
- entity = new EntitySmallFireball(this.world);
- } else if (WitherSkull.class.isAssignableFrom(clazz)) {
- entity = new EntityWitherSkull(this.world);
- } else if (DragonFireball.class.isAssignableFrom(clazz)) {
- entity = new EntityDragonFireball(this.world);
- } else {
- entity = new EntityLargeFireball(this.world);
- }
- ((Entity)entity).setPositionRotation(x, y, z, yaw, pitch);
- Vector direction = location.getDirection().multiply(10);
- ((EntityFireball)entity).setDirection(direction.getX(), direction.getY(), direction.getZ());
- } else if (ShulkerBullet.class.isAssignableFrom(clazz)) {
- entity = new EntityShulkerBullet(this.world);
- ((Entity)entity).setPositionRotation(x, y, z, yaw, pitch);
- } else if (LlamaSpit.class.isAssignableFrom(clazz)) {
- entity = new EntityLlamaSpit(this.world);
- ((Entity)entity).setPositionRotation(x, y, z, yaw, pitch);
- }
- } else if (Minecart.class.isAssignableFrom(clazz)) {
- if (PoweredMinecart.class.isAssignableFrom(clazz)) {
- entity = new EntityMinecartFurnace(this.world, x, y, z);
- } else if (StorageMinecart.class.isAssignableFrom(clazz)) {
- entity = new EntityMinecartChest(this.world, x, y, z);
- } else if (ExplosiveMinecart.class.isAssignableFrom(clazz)) {
- entity = new EntityMinecartTNT(this.world, x, y, z);
- } else if (HopperMinecart.class.isAssignableFrom(clazz)) {
- entity = new EntityMinecartHopper(this.world, x, y, z);
- } else if (SpawnerMinecart.class.isAssignableFrom(clazz)) {
- entity = new EntityMinecartMobSpawner(this.world, x, y, z);
- } else if (CommandMinecart.class.isAssignableFrom(clazz)) {
- entity = new EntityMinecartCommandBlock(this.world, x, y, z);
- } else {
- entity = new EntityMinecartRideable(this.world, x, y, z);
- }
- } else if (EnderSignal.class.isAssignableFrom(clazz)) {
- entity = new EntityEnderSignal(this.world, x, y, z);
- } else if (EnderCrystal.class.isAssignableFrom(clazz)) {
- entity = new EntityEnderCrystal(this.world);
- ((Entity)entity).setPositionRotation(x, y, z, 0.0F, 0.0F);
- } else if (LivingEntity.class.isAssignableFrom(clazz)) {
- if (Chicken.class.isAssignableFrom(clazz)) {
- entity = new EntityChicken(this.world);
- } else if (Cow.class.isAssignableFrom(clazz)) {
- if (MushroomCow.class.isAssignableFrom(clazz)) {
- entity = new EntityMushroomCow(this.world);
- } else {
- entity = new EntityCow(this.world);
- }
- } else if (Golem.class.isAssignableFrom(clazz)) {
- if (Snowman.class.isAssignableFrom(clazz)) {
- entity = new EntitySnowman(this.world);
- } else if (IronGolem.class.isAssignableFrom(clazz)) {
- entity = new EntityIronGolem(this.world);
- } else if (Shulker.class.isAssignableFrom(clazz)) {
- entity = new EntityShulker(this.world);
- }
- } else if (Creeper.class.isAssignableFrom(clazz)) {
- entity = new EntityCreeper(this.world);
- } else if (Ghast.class.isAssignableFrom(clazz)) {
- entity = new EntityGhast(this.world);
- } else if (Pig.class.isAssignableFrom(clazz)) {
- entity = new EntityPig(this.world);
- } else if (!Player.class.isAssignableFrom(clazz)) {
- if (Sheep.class.isAssignableFrom(clazz)) {
- entity = new EntitySheep(this.world);
- } else if (AbstractHorse.class.isAssignableFrom(clazz)) {
- if (ChestedHorse.class.isAssignableFrom(clazz)) {
- if (Donkey.class.isAssignableFrom(clazz)) {
- entity = new EntityHorseDonkey(this.world);
- } else if (Mule.class.isAssignableFrom(clazz)) {
- entity = new EntityHorseMule(this.world);
- } else if (Llama.class.isAssignableFrom(clazz)) {
- entity = new EntityLlama(this.world);
- }
- } else if (SkeletonHorse.class.isAssignableFrom(clazz)) {
- entity = new EntityHorseSkeleton(this.world);
- } else if (ZombieHorse.class.isAssignableFrom(clazz)) {
- entity = new EntityHorseZombie(this.world);
- } else {
- entity = new EntityHorse(this.world);
- }
- } else if (Skeleton.class.isAssignableFrom(clazz)) {
- if (Stray.class.isAssignableFrom(clazz)) {
- entity = new EntitySkeletonStray(this.world);
- } else if (WitherSkeleton.class.isAssignableFrom(clazz)) {
- entity = new EntitySkeletonWither(this.world);
- } else {
- entity = new EntitySkeleton(this.world);
- }
- } else if (Slime.class.isAssignableFrom(clazz)) {
- if (MagmaCube.class.isAssignableFrom(clazz)) {
- entity = new EntityMagmaCube(this.world);
- } else {
- entity = new EntitySlime(this.world);
- }
- } else if (Spider.class.isAssignableFrom(clazz)) {
- if (CaveSpider.class.isAssignableFrom(clazz)) {
- entity = new EntityCaveSpider(this.world);
- } else {
- entity = new EntitySpider(this.world);
- }
- } else if (Squid.class.isAssignableFrom(clazz)) {
- entity = new EntitySquid(this.world);
- } else if (Tameable.class.isAssignableFrom(clazz)) {
- if (Wolf.class.isAssignableFrom(clazz)) {
- entity = new EntityWolf(this.world);
- } else if (Ocelot.class.isAssignableFrom(clazz)) {
- entity = new EntityOcelot(this.world);
- } else if (Parrot.class.isAssignableFrom(clazz)) {
- entity = new EntityParrot(this.world);
- }
- } else if (PigZombie.class.isAssignableFrom(clazz)) {
- entity = new EntityPigZombie(this.world);
- } else if (Zombie.class.isAssignableFrom(clazz)) {
- if (Husk.class.isAssignableFrom(clazz)) {
- entity = new EntityZombieHusk(this.world);
- } else if (ZombieVillager.class.isAssignableFrom(clazz)) {
- entity = new EntityZombieVillager(this.world);
- } else {
- entity = new EntityZombie(this.world);
- }
- } else if (Giant.class.isAssignableFrom(clazz)) {
- entity = new EntityGiantZombie(this.world);
- } else if (Silverfish.class.isAssignableFrom(clazz)) {
- entity = new EntitySilverfish(this.world);
- } else if (Enderman.class.isAssignableFrom(clazz)) {
- entity = new EntityEnderman(this.world);
- } else if (Blaze.class.isAssignableFrom(clazz)) {
- entity = new EntityBlaze(this.world);
- } else if (Villager.class.isAssignableFrom(clazz)) {
- entity = new EntityVillager(this.world);
- } else if (Witch.class.isAssignableFrom(clazz)) {
- entity = new EntityWitch(this.world);
- } else if (Wither.class.isAssignableFrom(clazz)) {
- entity = new EntityWither(this.world);
- } else if (ComplexLivingEntity.class.isAssignableFrom(clazz)) {
- if (EnderDragon.class.isAssignableFrom(clazz)) {
- entity = new EntityEnderDragon(this.world);
- }
- } else if (Ambient.class.isAssignableFrom(clazz)) {
- if (Bat.class.isAssignableFrom(clazz)) {
- entity = new EntityBat(this.world);
- }
- } else if (Rabbit.class.isAssignableFrom(clazz)) {
- entity = new EntityRabbit(this.world);
- } else if (Endermite.class.isAssignableFrom(clazz)) {
- entity = new EntityEndermite(this.world);
- } else if (Guardian.class.isAssignableFrom(clazz)) {
- if (ElderGuardian.class.isAssignableFrom(clazz)) {
- entity = new EntityGuardianElder(this.world);
- } else {
- entity = new EntityGuardian(this.world);
- }
- } else if (ArmorStand.class.isAssignableFrom(clazz)) {
- entity = new EntityArmorStand(this.world, x, y, z);
- } else if (PolarBear.class.isAssignableFrom(clazz)) {
- entity = new EntityPolarBear(this.world);
- } else if (Vex.class.isAssignableFrom(clazz)) {
- entity = new EntityVex(this.world);
- } else if (Illager.class.isAssignableFrom(clazz)) {
- if (Spellcaster.class.isAssignableFrom(clazz)) {
- if (Evoker.class.isAssignableFrom(clazz)) {
- entity = new EntityEvoker(this.world);
- } else if (Illusioner.class.isAssignableFrom(clazz)) {
- entity = new EntityIllagerIllusioner(this.world);
- }
- } else if (Vindicator.class.isAssignableFrom(clazz)) {
- entity = new EntityVindicator(this.world);
- }
- }
- }
- if (entity != null) {
- ((Entity)entity).setLocation(x, y, z, yaw, pitch);
- ((Entity)entity).setHeadRotation(yaw);
- }
- } else if (Hanging.class.isAssignableFrom(clazz)) {
- Block block = this.getBlockAt(location);
- BlockFace face = BlockFace.SELF;
- int width = 16;
- 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};
- BlockPosition pos = new BlockPosition((int)x, (int)y, (int)z);
- BlockFace[] var21 = faces;
- int var20 = faces.length;
- for(int var19 = 0; var19 < var20; ++var19) {
- BlockFace dir = var21[var19];
- net.minecraft.server.v1_12_R1.Block nmsBlock = CraftMagicNumbers.getBlock(block.getRelative(dir));
- if (nmsBlock.getBlockData().getMaterial().isBuildable() || BlockDiodeAbstract.isDiode(nmsBlock.getBlockData())) {
- boolean taken = false;
- AxisAlignedBB bb = EntityHanging.calculateBoundingBox((Entity)null, pos, CraftBlock.blockFaceToNotch(dir).opposite(), width, height);
- List<Entity> list = this.world.getEntities((Entity)null, bb);
- Iterator it = list.iterator();
- while(!taken && it.hasNext()) {
- Entity e = (Entity)it.next();
- if (e instanceof EntityHanging) {
- taken = true;
- }
- }
- if (!taken) {
- face = dir;
- break;
- }
- }
- }
- if (LeashHitch.class.isAssignableFrom(clazz)) {
- entity = new EntityLeash(this.world, new BlockPosition((int)x, (int)y, (int)z));
- ((Entity)entity).attachedToPlayer = true;
- } else {
- Preconditions.checkArgument(face != BlockFace.SELF, "Cannot spawn hanging entity for %s at %s (no free face)", clazz.getName(), location);
- EnumDirection dir = CraftBlock.blockFaceToNotch(face).opposite();
- if (Painting.class.isAssignableFrom(clazz)) {
- entity = new EntityPainting(this.world, new BlockPosition((int)x, (int)y, (int)z), dir);
- } else if (ItemFrame.class.isAssignableFrom(clazz)) {
- entity = new EntityItemFrame(this.world, new BlockPosition((int)x, (int)y, (int)z), dir);
- }
- }
- if (entity != null && !((EntityHanging)entity).survives()) {
- throw new IllegalArgumentException("Cannot spawn hanging entity for " + clazz.getName() + " at " + location);
- }
- } else if (TNTPrimed.class.isAssignableFrom(clazz)) {
- entity = new EntityTNTPrimed(this.world, x, y, z, (EntityLiving)null);
- } else if (ExperienceOrb.class.isAssignableFrom(clazz)) {
- entity = new EntityExperienceOrb(this.world, x, y, z, 0);
- } else if (Weather.class.isAssignableFrom(clazz)) {
- if (LightningStrike.class.isAssignableFrom(clazz)) {
- entity = new EntityLightning(this.world, x, y, z, false);
- }
- } else if (Firework.class.isAssignableFrom(clazz)) {
- entity = new EntityFireworks(this.world, x, y, z, net.minecraft.server.v1_12_R1.ItemStack.a);
- } else if (AreaEffectCloud.class.isAssignableFrom(clazz)) {
- entity = new EntityAreaEffectCloud(this.world, x, y, z);
- } else if (EvokerFangs.class.isAssignableFrom(clazz)) {
- entity = new EntityEvokerFangs(this.world, x, y, z, (float)Math.toRadians((double)yaw), 0, (EntityLiving)null);
- }
- if (entity != null) {
- return (Entity)entity;
- } else {
- throw new IllegalArgumentException("Cannot spawn an entity for " + clazz.getName());
- }
- } else {
- throw new IllegalArgumentException("Location or entity class cannot be null");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement