use of net.minecraft.entity.monster.EntityShulker in project Crossroads by Crossroads-Development.
the class RiftEffect method doEffect.
@Override
public void doEffect(World worldIn, BlockPos pos, double mult) {
if (worldIn.getBlockState(pos).getBlock() == Blocks.PURPUR_BLOCK) {
worldIn.setBlockState(pos, Blocks.AIR.getDefaultState());
EntityShulker shulker = new EntityShulker(worldIn);
shulker.setAttachmentPos(pos);
shulker.setPosition(pos.getX(), pos.getY(), pos.getZ());
worldIn.spawnEntity(shulker);
return;
}
if (worldIn.getTileEntity(pos) instanceof TileEntitySkull && ((TileEntitySkull) worldIn.getTileEntity(pos)).getSkullType() == 0) {
int meta = worldIn.getBlockState(pos).getBlock().getMetaFromState(worldIn.getBlockState(pos));
worldIn.setBlockState(pos, Blocks.AIR.getDefaultState(), 3);
worldIn.setBlockState(pos, Blocks.SKULL.getStateFromMeta(meta), 3);
((TileEntitySkull) worldIn.getTileEntity(pos)).setType(1);
return;
}
if (BlockSilverfish.canContainSilverfish(worldIn.getBlockState(pos))) {
worldIn.setBlockState(pos, Blocks.MONSTER_EGG.getDefaultState().withProperty(BlockSilverfish.VARIANT, BlockSilverfish.EnumType.forModelBlock(worldIn.getBlockState(pos))), 3);
return;
}
WorldServer worldServ = (WorldServer) worldIn;
if (worldServ.countEntities(EnumCreatureType.MONSTER, true) <= worldServ.playerEntities.size() * 3 * EnumCreatureType.MONSTER.getMaxNumberOfCreature() && rand.nextInt(64) < mult) {
Biome.SpawnListEntry spawn = worldServ.getSpawnListEntryForTypeAt(EnumCreatureType.MONSTER, pos);
if (spawn != null) {
EntityLiving ent = null;
try {
ent = spawn.entityClass.getConstructor(new Class[] { World.class }).newInstance(new Object[] { worldServ });
} catch (Exception e) {
e.printStackTrace();
}
ent.setPosition(pos.getX(), pos.getY(), pos.getZ());
worldServ.spawnEntity(ent);
}
}
}
use of net.minecraft.entity.monster.EntityShulker in project CumServerPro by MCUmbrella.
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 EntityBoat(world, x, y, z);
entity.setLocationAndAngles(x, y, z, yaw, pitch);
} else if (FallingBlock.class.isAssignableFrom(clazz)) {
entity = new EntityFallingBlock(world, x, y, z, world.getBlockState(new BlockPos(x, y, z)));
} else if (Projectile.class.isAssignableFrom(clazz)) {
if (Snowball.class.isAssignableFrom(clazz)) {
entity = new EntitySnowball(world, x, y, z);
} else if (Egg.class.isAssignableFrom(clazz)) {
entity = new EntityEgg(world, x, y, z);
} else if (Arrow.class.isAssignableFrom(clazz)) {
if (TippedArrow.class.isAssignableFrom(clazz)) {
entity = new EntityTippedArrow(world);
((EntityTippedArrow) entity).setType(CraftPotionUtil.fromBukkit(new PotionData(PotionType.WATER, false, false)));
} else if (SpectralArrow.class.isAssignableFrom(clazz)) {
entity = new EntitySpectralArrow(world);
} else {
entity = new EntityTippedArrow(world);
}
entity.setLocationAndAngles(x, y, z, 0, 0);
} else if (ThrownExpBottle.class.isAssignableFrom(clazz)) {
entity = new EntityExpBottle(world);
entity.setLocationAndAngles(x, y, z, 0, 0);
} else if (EnderPearl.class.isAssignableFrom(clazz)) {
entity = new EntityEnderPearl(world);
entity.setLocationAndAngles(x, y, z, 0, 0);
} else if (ThrownPotion.class.isAssignableFrom(clazz)) {
if (LingeringPotion.class.isAssignableFrom(clazz)) {
entity = new EntityPotion(world, x, y, z, CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.LINGERING_POTION, 1)));
} else {
entity = new EntityPotion(world, x, y, z, CraftItemStack.asNMSCopy(new ItemStack(org.bukkit.Material.SPLASH_POTION, 1)));
}
} else if (Fireball.class.isAssignableFrom(clazz)) {
if (SmallFireball.class.isAssignableFrom(clazz)) {
entity = new EntitySmallFireball(world);
} else if (WitherSkull.class.isAssignableFrom(clazz)) {
entity = new EntityWitherSkull(world);
} else if (DragonFireball.class.isAssignableFrom(clazz)) {
entity = new EntityDragonFireball(world);
} else {
entity = new EntityLargeFireball(world);
}
entity.setLocationAndAngles(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(world);
entity.setLocationAndAngles(x, y, z, yaw, pitch);
} else if (LlamaSpit.class.isAssignableFrom(clazz)) {
entity = new EntityLlamaSpit(world);
entity.setLocationAndAngles(x, y, z, yaw, pitch);
}
} else if (Minecart.class.isAssignableFrom(clazz)) {
if (PoweredMinecart.class.isAssignableFrom(clazz)) {
entity = new EntityMinecartFurnace(world, x, y, z);
} else if (StorageMinecart.class.isAssignableFrom(clazz)) {
entity = new EntityMinecartChest(world, x, y, z);
} else if (ExplosiveMinecart.class.isAssignableFrom(clazz)) {
entity = new EntityMinecartTNT(world, x, y, z);
} else if (HopperMinecart.class.isAssignableFrom(clazz)) {
entity = new EntityMinecartHopper(world, x, y, z);
} else if (SpawnerMinecart.class.isAssignableFrom(clazz)) {
entity = new EntityMinecartMobSpawner(world, x, y, z);
} else if (CommandMinecart.class.isAssignableFrom(clazz)) {
entity = new EntityMinecartCommandBlock(world, x, y, z);
} else {
// Default to rideable minecart for pre-rideable compatibility
entity = new EntityMinecartEmpty(world, x, y, z);
}
} else if (EnderSignal.class.isAssignableFrom(clazz)) {
entity = new EntityEnderEye(world, x, y, z);
} else if (EnderCrystal.class.isAssignableFrom(clazz)) {
entity = new EntityEnderCrystal(world);
entity.setLocationAndAngles(x, y, z, 0, 0);
} else if (LivingEntity.class.isAssignableFrom(clazz)) {
if (Chicken.class.isAssignableFrom(clazz)) {
entity = new EntityChicken(world);
} else if (Cow.class.isAssignableFrom(clazz)) {
if (MushroomCow.class.isAssignableFrom(clazz)) {
entity = new EntityMooshroom(world);
} else {
entity = new EntityCow(world);
}
} else if (Golem.class.isAssignableFrom(clazz)) {
if (Snowman.class.isAssignableFrom(clazz)) {
entity = new EntitySnowman(world);
} else if (IronGolem.class.isAssignableFrom(clazz)) {
entity = new EntityIronGolem(world);
} else if (Shulker.class.isAssignableFrom(clazz)) {
entity = new EntityShulker(world);
}
} else if (Creeper.class.isAssignableFrom(clazz)) {
entity = new EntityCreeper(world);
} else if (Ghast.class.isAssignableFrom(clazz)) {
entity = new EntityGhast(world);
} else if (Pig.class.isAssignableFrom(clazz)) {
entity = new EntityPig(world);
} else if (Player.class.isAssignableFrom(clazz)) {
// need a net server handler for this one
} else if (Sheep.class.isAssignableFrom(clazz)) {
entity = new EntitySheep(world);
} else if (AbstractHorse.class.isAssignableFrom(clazz)) {
if (ChestedHorse.class.isAssignableFrom(clazz)) {
if (Donkey.class.isAssignableFrom(clazz)) {
entity = new EntityDonkey(world);
} else if (Mule.class.isAssignableFrom(clazz)) {
entity = new EntityMule(world);
} else if (Llama.class.isAssignableFrom(clazz)) {
entity = new EntityLlama(world);
}
} else if (SkeletonHorse.class.isAssignableFrom(clazz)) {
entity = new EntitySkeletonHorse(world);
} else if (ZombieHorse.class.isAssignableFrom(clazz)) {
entity = new EntityZombieHorse(world);
} else {
entity = new EntityHorse(world);
}
} else if (Skeleton.class.isAssignableFrom(clazz)) {
if (Stray.class.isAssignableFrom(clazz)) {
entity = new EntityStray(world);
} else if (WitherSkeleton.class.isAssignableFrom(clazz)) {
entity = new EntityWitherSkeleton(world);
} else {
entity = new EntitySkeleton(world);
}
} else if (Slime.class.isAssignableFrom(clazz)) {
if (MagmaCube.class.isAssignableFrom(clazz)) {
entity = new EntityMagmaCube(world);
} else {
entity = new EntitySlime(world);
}
} else if (Spider.class.isAssignableFrom(clazz)) {
if (CaveSpider.class.isAssignableFrom(clazz)) {
entity = new EntityCaveSpider(world);
} else {
entity = new EntitySpider(world);
}
} else if (Squid.class.isAssignableFrom(clazz)) {
entity = new EntitySquid(world);
} else if (Tameable.class.isAssignableFrom(clazz)) {
if (Wolf.class.isAssignableFrom(clazz)) {
entity = new EntityWolf(world);
} else if (Ocelot.class.isAssignableFrom(clazz)) {
entity = new EntityOcelot(world);
} else if (Parrot.class.isAssignableFrom(clazz)) {
entity = new EntityParrot(world);
}
} else if (PigZombie.class.isAssignableFrom(clazz)) {
entity = new EntityPigZombie(world);
} else if (Zombie.class.isAssignableFrom(clazz)) {
if (Husk.class.isAssignableFrom(clazz)) {
entity = new EntityHusk(world);
} else if (ZombieVillager.class.isAssignableFrom(clazz)) {
entity = new EntityZombieVillager(world);
} else {
entity = new EntityZombie(world);
}
} else if (Giant.class.isAssignableFrom(clazz)) {
entity = new EntityGiantZombie(world);
} else if (Silverfish.class.isAssignableFrom(clazz)) {
entity = new EntitySilverfish(world);
} else if (Enderman.class.isAssignableFrom(clazz)) {
entity = new EntityEnderman(world);
} else if (Blaze.class.isAssignableFrom(clazz)) {
entity = new EntityBlaze(world);
} else if (Villager.class.isAssignableFrom(clazz)) {
entity = new EntityVillager(world);
} else if (Witch.class.isAssignableFrom(clazz)) {
entity = new EntityWitch(world);
} else if (Wither.class.isAssignableFrom(clazz)) {
entity = new EntityWither(world);
} else if (ComplexLivingEntity.class.isAssignableFrom(clazz)) {
if (EnderDragon.class.isAssignableFrom(clazz)) {
entity = new EntityDragon(world);
}
} else if (Ambient.class.isAssignableFrom(clazz)) {
if (Bat.class.isAssignableFrom(clazz)) {
entity = new EntityBat(world);
}
} else if (Rabbit.class.isAssignableFrom(clazz)) {
entity = new EntityRabbit(world);
} else if (Endermite.class.isAssignableFrom(clazz)) {
entity = new EntityEndermite(world);
} else if (Guardian.class.isAssignableFrom(clazz)) {
if (ElderGuardian.class.isAssignableFrom(clazz)) {
entity = new EntityElderGuardian(world);
} else {
entity = new EntityGuardian(world);
}
} else if (ArmorStand.class.isAssignableFrom(clazz)) {
entity = new EntityArmorStand(world, x, y, z);
} else if (PolarBear.class.isAssignableFrom(clazz)) {
entity = new EntityPolarBear(world);
} else if (Vex.class.isAssignableFrom(clazz)) {
entity = new EntityVex(world);
} else if (Illager.class.isAssignableFrom(clazz)) {
if (Spellcaster.class.isAssignableFrom(clazz)) {
if (Evoker.class.isAssignableFrom(clazz)) {
entity = new EntityEvoker(world);
} else if (Illusioner.class.isAssignableFrom(clazz)) {
entity = new EntityIllusionIllager(world);
}
} else if (Vindicator.class.isAssignableFrom(clazz)) {
entity = new EntityVindicator(world);
}
}
if (entity != null) {
entity.setPositionAndRotation(x, y, z, yaw, pitch);
// SPIGOT-3587
entity.setRotationYawHead(yaw);
}
} else if (Hanging.class.isAssignableFrom(clazz)) {
Block block = getBlockAt(location);
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 };
final BlockPos pos = new BlockPos((int) x, (int) y, (int) z);
for (BlockFace dir : faces) {
net.minecraft.block.Block nmsBlock = CraftMagicNumbers.getBlock(block.getRelative(dir));
if (nmsBlock.getDefaultState().getMaterial().isSolid() || BlockRedstoneDiode.isDiode(nmsBlock.getDefaultState())) {
boolean taken = false;
AxisAlignedBB bb = EntityHanging.calculateBoundingBox(null, pos, CraftBlock.blockFaceToNotch(dir).getOpposite(), width, height);
List<net.minecraft.entity.Entity> list = (List<net.minecraft.entity.Entity>) world.getEntitiesWithinAABBExcludingEntity(null, bb);
for (Iterator<net.minecraft.entity.Entity> it = list.iterator(); !taken && it.hasNext(); ) {
net.minecraft.entity.Entity e = it.next();
if (e instanceof EntityHanging) {
// Hanging entities do not like hanging entities which intersect them.
taken = true;
}
}
if (!taken) {
face = dir;
break;
}
}
}
if (LeashHitch.class.isAssignableFrom(clazz)) {
entity = new EntityLeashKnot(world, new BlockPos((int) x, (int) y, (int) z));
entity.forceSpawn = 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);
EnumFacing dir = CraftBlock.blockFaceToNotch(face).getOpposite();
if (Painting.class.isAssignableFrom(clazz)) {
entity = new EntityPainting(world, new BlockPos((int) x, (int) y, (int) z), dir);
} else if (ItemFrame.class.isAssignableFrom(clazz)) {
entity = new EntityItemFrame(world, new BlockPos((int) x, (int) y, (int) z), dir);
}
}
if (entity != null && !((EntityHanging) entity).onValidSurface()) {
throw new IllegalArgumentException("Cannot spawn hanging entity for " + clazz.getName() + " at " + location);
}
} else if (TNTPrimed.class.isAssignableFrom(clazz)) {
entity = new EntityTNTPrimed(world, x, y, z, null);
} else if (ExperienceOrb.class.isAssignableFrom(clazz)) {
entity = new EntityXPOrb(world, x, y, z, 0);
} else if (Weather.class.isAssignableFrom(clazz)) {
// not sure what this can do
if (LightningStrike.class.isAssignableFrom(clazz)) {
entity = new EntityLightningBolt(world, x, y, z, false);
// what is this, I don't even
}
} else if (Firework.class.isAssignableFrom(clazz)) {
entity = new EntityFireworkRocket(world, x, y, z, net.minecraft.item.ItemStack.EMPTY);
} else if (AreaEffectCloud.class.isAssignableFrom(clazz)) {
entity = new EntityAreaEffectCloud(world, x, y, z);
} else if (EvokerFangs.class.isAssignableFrom(clazz)) {
entity = new EntityEvokerFangs(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.monster.EntityShulker in project Minecraft-SlientClient-Hack by YouNeverKnow00.
the class ModelShulker method setRotationAngles.
/**
* Sets the model's various rotation angles. For bipeds, par1 and par2 are used for animating the movement of arms
* and legs, where par1 represents the time(so that arms and legs swing back and forth) and par2 represents how
* "far" arms and legs can swing at most.
*/
public void setRotationAngles(float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch, float scaleFactor, Entity entityIn) {
EntityShulker entityshulker = (EntityShulker) entityIn;
float f = ageInTicks - (float) entityshulker.ticksExisted;
float f1 = (0.5F + entityshulker.getClientPeekAmount(f)) * (float) Math.PI;
float f2 = -1.0F + MathHelper.sin(f1);
float f3 = 0.0F;
if (f1 > (float) Math.PI) {
f3 = MathHelper.sin(ageInTicks * 0.1F) * 0.7F;
}
this.lid.setRotationPoint(0.0F, 16.0F + MathHelper.sin(f1) * 8.0F + f3, 0.0F);
if (entityshulker.getClientPeekAmount(f) > 0.3F) {
this.lid.rotateAngleY = f2 * f2 * f2 * f2 * (float) Math.PI * 0.125F;
} else {
this.lid.rotateAngleY = 0.0F;
}
this.head.rotateAngleX = headPitch * 0.017453292F;
this.head.rotateAngleY = netHeadYaw * 0.017453292F;
}
use of net.minecraft.entity.monster.EntityShulker in project BetterWithAddons by DaedalusGame.
the class AssortedHandler method onEntityDrop.
@SubscribeEvent
public void onEntityDrop(LivingDropsEvent event) {
EntityLivingBase living = event.getEntityLiving();
if (living == null || living.world == null)
return;
Random rand = living.world.rand;
if (living instanceof EntityShulker) {
if (rand.nextFloat() < 1.0f) {
event.getEntityLiving().entityDropItem(ModItems.material.getMaterial("ender_cream", 1 + rand.nextInt(2)), 0);
}
}
}
use of net.minecraft.entity.monster.EntityShulker in project ProgressiveBosses by Insane96.
the class Dragon method SpawnShulkers.
private static void SpawnShulkers(EntityDragon dragon, World world) {
if (ModConfig.config.dragon.minions.difficultyToSpawn <= 0)
return;
NBTTagCompound tags = dragon.getEntityData();
// Mobs Properties Randomness
tags.setBoolean("mobsrandomizzation:preventProcessing", true);
float difficulty = tags.getFloat("progressivebosses:difficulty");
if (difficulty < ModConfig.config.dragon.minions.difficultyToSpawn)
return;
int cooldown = tags.getInteger("progressivebosses:shulkers_cooldown");
if (cooldown > 0) {
tags.setInteger("progressivebosses:shulkers_cooldown", cooldown - 1);
} else {
int cooldownReduction = (int) (difficulty * ModConfig.config.dragon.minions.spawnCooldownReduction);
cooldown = MathHelper.getInt(world.rand, ModConfig.config.dragon.minions.minCooldown - cooldownReduction, ModConfig.config.dragon.minions.maxCooldown - cooldownReduction);
tags.setInteger("progressivebosses:shulkers_cooldown", cooldown);
EntityShulker shulker = new EntityShulker(world);
NBTTagCompound shulkerTags = shulker.getEntityData();
// Scaling Health
shulkerTags.setShort("scalinghealth:difficulty", (short) -1);
float angle = world.rand.nextFloat() * (float) Math.PI * 2f;
float x = (float) (Math.cos(angle) * (Utils.Math.getFloat(world.rand, 15f, 40f)));
float z = (float) (Math.sin(angle) * (Utils.Math.getFloat(world.rand, 15f, 40f)));
float y = world.getTopSolidOrLiquidBlock(new BlockPos(x, 255, z)).getY();
IAttributeInstance followRange = shulker.getEntityAttribute(SharedMonsterAttributes.FOLLOW_RANGE);
followRange.setBaseValue(64f);
shulker.setPosition(x, y, z);
NBTTagCompound compound = new NBTTagCompound();
shulker.writeEntityToNBT(compound);
compound.setByte("Color", (byte) 15);
shulker.readEntityFromNBT(compound);
// shulker.setCustomNameTag(I18n.format("dragon.minion"));
shulker.setCustomNameTag("Dragon's Minion");
ArrayList<EntityAITaskEntry> toRemove = new ArrayList<EntityAITaskEntry>();
for (EntityAITaskEntry task : shulker.tasks.taskEntries) {
if (task.action instanceof EntityAIWatchClosest)
toRemove.add(task);
if (Reflection.EntityShulker_AIAttack.isInstance(task.action))
toRemove.add(task);
}
for (EntityAITaskEntry entityAITaskEntry : toRemove) {
shulker.tasks.taskEntries.remove(entityAITaskEntry);
}
toRemove.clear();
for (EntityAITaskEntry targetTask : shulker.targetTasks.taskEntries) {
if (targetTask.action instanceof EntityAINearestAttackableTarget)
toRemove.add(targetTask);
}
for (EntityAITaskEntry entityAITaskEntry : toRemove) {
shulker.targetTasks.taskEntries.remove(entityAITaskEntry);
}
toRemove.clear();
shulker.tasks.addTask(1, new EntityAIWatchClosest(shulker, EntityPlayer.class, 64f));
shulker.tasks.addTask(1, new DragonMinionAIAttack(shulker));
shulker.targetTasks.addTask(2, new DragonMinionAIAttackNearest(shulker));
Reflection.Set(Reflection.EntityLiving_deathLootTable, shulker, LootTables.dragonMinion);
Reflection.Set(Reflection.EntityLiving_experienceValue, shulker, 2);
world.spawnEntity(shulker);
}
}
Aggregations