I've been trying to get this to work for a while, looked through the ItemMonsterPlacer and EntityEgg classes. I have an item that when used (right clicked) on a passive mob (EntityCow) will transform it into a new entity. The method was cobbled together using the code from shears as a template. The transformation seems to be working correctly but when the new entity is spawned it is not facing the same direction as the previous (pre-transformed) entity. I am wondering if it is related to a client/server communication difficulty but I am still quite new at modding so uncertain how to reconcile. Code listed below and greatly appreciate if anyone has any input!
 
	 
 
	    @Override
 
	    public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer playerIn, EntityLivingBase target, EnumHand hand)
 
	    {
 
	        if (target instanceof EntityCow)
 
	        {
 
	              if(!target.world.isRemote)
 
	              {          
 
	                     EntityEntry EntID = net.minecraftforge.fml.common.registry.EntityRegistry.getEntry(CustomEntity.class);
 
	                     ResourceLocation CustomEntityResource= ForgeRegistries.ENTITIES.getKey(EntID);  
 
	                     Entity testCustomEntity = EntityList.createEntityByIDFromName(CustomEntityResource, target.world);         
 
	                     if (testCustomEntity instanceof CustomEntity)
 
	                     {
 
	                           CustomEntity createdEntity = (CustomEntity)testCustomEntity;
 
	                           createdEntity.setLocationAndAngles(target.posX, target.posY, target.posZ, target.rotationYaw, target.rotationPitch);
 
	                           createdEntity.rotationYawHead = target.rotationYawHead;
 
	                           createdEntity.renderYawOffset = target.renderYawOffset;
 
	                           createdEntity.onInitialSpawn(target.world.getDifficultyForLocation(new BlockPos(createdEntity)), (IEntityLivingData)null);
 
	                           target.world.spawnEntity(testCustomEntity);
 
	                           createdEntity.playLivingSound();                                      
 
	                     }
 
	                     target.world.removeEntity(target);
 
	                     target.setDead();
 
	                     stack.shrink(1);
 
	                     return true;
 
	              }
 
	              else
 
	              {
 
	                     return false;
 
	              }
 
	        }
 
	        else
 
	        {
 
	              return false;
 
	        }
 
	}